Sql server 2008 大容量插入大型CSV文件并附加一列

Sql server 2008 大容量插入大型CSV文件并附加一列,sql-server-2008,sql-server-2008-r2,bulkinsert,Sql Server 2008,Sql Server 2008 R2,Bulkinsert,我能够在SQLServer2008R2数据库上使用大容量插入来导入一个超过200万行的CSV文件(以制表符分隔)。计划每周运行此命令 我在生成的表中添加了一个名为“LastUpdateDate”的列来存储日期戳,因为行是通过插入触发器更新的。但当我再次运行大容量插入时,由于列不匹配,它失败了,因为原始CSV文件中没有这样的字段 是否可以将大容量插入配置为在运行时忽略“LastUpdateDate”列 谢谢 --编辑: 我尝试使用格式化文件,但仍然无法解决问题 表如下所示 USE Adventur

我能够在SQLServer2008R2数据库上使用大容量插入来导入一个超过200万行的CSV文件(以制表符分隔)。计划每周运行此命令

我在生成的表中添加了一个名为“LastUpdateDate”的列来存储日期戳,因为行是通过插入触发器更新的。但当我再次运行大容量插入时,由于列不匹配,它失败了,因为原始CSV文件中没有这样的字段

是否可以将大容量插入配置为在运行时忽略“LastUpdateDate”列

谢谢

--编辑:

我尝试使用格式化文件,但仍然无法解决问题

表如下所示

USE AdventureWorks2008R2;
GO
CREATE TABLE AAA_Test_Table 
   (
   Col1 smallint,
   Col2 nvarchar(50) ,
   Col3 nvarchar(50) , 
   LastUpdatedDate datetime 
   );
GO
csv“data.txt”文件为:

格式文件如下所示:

10.0
3
1       SQLCHAR       0       7     ","     1     Col1               ""
2       SQLCHAR       0       100     ","     2     Col2               SQL_Latin1_General_CP1_CI_AS
3       SQLCHAR       0       100     ","     3     Col3               SQL_Latin1_General_CP1_CI_AS
我运行的SQL命令是:

DELETE AAA_Test_Table
BULK INSERT AAA_Test_Table
FROM 'C:\Windows\Temp\TestFormatFile\data.txt' 
WITH (formatfile='C:\Windows\Temp\TestFormatFile\formatfile.fmt');
GO
收到的错误是:

Msg 4864, Level 16, State 1, Line 2
Bulk load data conversion error (type mismatch or invalid character for the specified codepage) for row 2, column 1 (Col1).
Msg 4832, Level 16, State 1, Line 2
Bulk load: An unexpected end of file was encountered in the data file.
Msg 7399, Level 16, State 1, Line 2
The OLE DB provider "BULK" for linked server "(null)" reported an error. The provider did not give any information about the error.
Msg 7330, Level 16, State 2, Line 2
Cannot fetch a row from OLE DB provider "BULK" for linked server "(null)".

是的,您可以使用文档中的
格式文件
,并将该格式与
bcp
命令和
-f
选项一起使用,如
-f format\u file\u name.fmt

那么另一个选择是,;导入所有数据(我指的是所有字段),然后使用类似SQL的方法删除不需要的列
lastUpdateDate

ALTER TABLE your_bulk_insert_table DROP COLUMN lastupdateddate

它可以忽略格式文件中未指定/映射的列?是,未映射的列将被忽略。另外,请检查编辑后的答案以获得备选答案。对不起,“LastUpdateDate”列是我添加到表中的,它不存在于原始CSV文件中。此列应按计划通过触发器自动更新。如果它不在CSV中,则根本没有问题。。正确的?如果你不想要那个专栏,那就放下它。我自己修好了。问题在于第三个字段的终止符。应该是“”\r\n“”,而不是“”。
ALTER TABLE your_bulk_insert_table DROP COLUMN lastupdateddate