SQL使用BULK INSERT

时间:2013-08-29 15:31:08

标签: sql-server tsql

我知道要做一个批量插入我可以做类似的事情:

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

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

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

5 个答案:

答案 0 :(得分:4)

虽然您可以使用格式文件来处理BULK INSERT,但我觉得这种方法非常麻烦且容易出错。因人而异。其他想法:

  1. 插入临时表,仅将所需列插入目标
  2. 使用另一种方法,如OPENROWSET(BULK或SSIS或BCP
  3. 编写一个预解析器,它将获取文件并输出仅包含相关列的新文件
  4. 更改生成这些文件的任何内容,以输出仅包含相关列的其他文件
  5. 在之前的项目中,我们使用了(3)我们的巨大优势 - 我们能够重新编写文件,而无需使用无用数据打扰SQL,并且在管道中更早地拒绝无效数据。

答案 1 :(得分:0)

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

您可以查看Use a Format File to Skip a Table Column

同时检查this

答案 2 :(得分:0)

您需要使用格式文件

Check out this link

答案 3 :(得分:0)

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

答案 4 :(得分:0)

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

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