【问题标题】:Sql bulk insert calculate values at insertSql批量插入在插入时计算值
【发布时间】:2015-12-01 14:13:19
【问题描述】:

因此可以将数据从 .csv 文件导入 SQL Server。 Import CSV file into SQL Server

我正在尝试使用它来将测试数据导入数据库。所以我希望日期是最新的。目前我们使用带有getdate() 的.sql 文件,因此插入日期后都是新生成的。但是,当使用 .csv 文件中的批量插入插入 getdate() 时,它只会显示“getdate()”。日期只是一个例子,我需要以不同的方式计算不同的行。所以一个日期可能会增加 5 个,另外 10 个。

【问题讨论】:

标签: sql sql-server csv bulkinsert dynamic-values


【解决方案1】:

虽然批量插入不允许您指定函数调用,但您可以通过更改表定义来解决此问题:将default 约束添加到您的date 列,并且不要通过bulkinsert 向其中插入任何内容。这将确保 SQL Server 通过调用 getdate 来填充列:

ALTER TABLE MyTable ADD CONSTRAINT
DF_MyTable_MyDateColumn_GetDate DEFAULT GETDATE() FOR MyDateColumn

【讨论】:

  • 谢谢,但它需要插入不同的日期。这似乎是不可能的。
  • @MrFox “插入不同的日期”是什么意思?这种方法也将根据插入行的时间插入不同的日期。只有当插入的数据没有为MyDateColumn 提供值时,才会调用GETDATE()
  • 在一组行中,不同行的日期必须不同。
  • @MrFox 您如何使用GETDATE() 实现这一点,除非在您的代码执行批量插入时数据发生变化?
  • 因为我们正常插入,我可以在不同的记录上执行 GETDATE() + 5, GETDATE() + 10。此外,每次必须插入 .csv 文件时都重新生成它真的很不方便。
猜你喜欢
  • 1970-01-01
  • 2018-05-06
  • 1970-01-01
  • 2013-01-18
  • 2010-09-24
  • 2016-01-31
  • 2013-02-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多