2

我知道要进行批量插入,我可以执行以下操作:

    BULK INSERT tblName FROM 'c:\bulktext.text' With (FIELDTERMINATOR = ',')

我在 bulktext.text 中只有 4 列,但 tblName 有 20 列。如何仅将这 5 列插入 tblName。

有没有办法说应该在 BULK 语句中插入哪些列

4

5 回答 5

4

虽然您可以使用格式文件来处理此问题BULK INSERT,但我发现此方法非常麻烦且容易出错。YMMV。其他想法:

  1. 插入到临时表中,并且只将所需的列插入到目标中
  2. 使用另一种方法,如 OPENROWSET(BULK 或 SSIS 或 BCP
  3. 编写一个预解析器,它将获取文件并输出仅包含相关列的新文件
  4. 更改生成这些文件的任何内容以输出仅包含相关列的附加文件

在之前的项目中,我们使用 (3) 获得了很大的优势——我们能够重写文件而无需用无用数据打扰 SQL,并在管道中更早地拒绝无效数据。

于 2013-08-29T15:34:09.447 回答
0

在进行批量插入时您不能忽略一个字段,而是尝试加载所有 20 列并删除您不想要的列

您可以查看使用格式文件跳过表格列

还要检查这个

于 2013-08-29T15:34:29.510 回答
0

您需要使用格式文件

看看这个链接

于 2013-08-29T15:34:41.903 回答
0

信不信由你,创建一个仅映射这四列然后BULK INSERTing 到列的视图也可以,而且它比格式化文件容易得多。

但是@AaronBertand 使用专用临时表的建议确实是一个更好的主意(大多数 DBA 通常这样做)。

于 2013-08-29T15:55:14.547 回答
0

您可以使用 Microsoft 推荐的特制格式文件的方法,在此处的 BOL中进行了描述。 如果这是一个问题,您需要使用上面的 @Aaron Bertrand 的方法。

于 2013-08-29T15:35:51.567 回答