使用标识列(T-SQL)将BulkInsert放入表中

时间:2012-01-26 21:19:22

标签: sql-server-2008 tsql bulkinsert

1)我可以将CSV文件中的BulkInsert执行到表中,以使该表具有不在CSV中的标识列,并自动分配吗?

2)是否有任何规则表明我要BulkInsert进入的表,必须按照与正在读取的平面文件相同的顺序使用相同的列?

这就是我想要做的。包含所有内容的字段太多......

BULK INSERT ServicerStageACS  
   FROM 'C:\POC\DataFiles\ACSDemo1.csv' 
   WITH (FORMATFILE = 'C:\POC\DataFiles\ACSDemo1.Fmt');
GO
SELECT * FROM ServicerStageACS; 

错误:

  

Msg 4864,Level 16,State 1,Line 3批量加载数据转换错误   (为指定的代码页键入不匹配或无效字符)   第1行,第1列(rowID)。

我很确定错误是因为我有身份。

FMT就像这样开始:

9.0
4
1       SQLCHAR       0       7       ","      1     Month        SQL_Latin1_General_CP1_CI_AS
2       SQLCHAR       0       100     ","      2     Client       SQL_Latin1_General_CP1_CI_AS

1 个答案:

答案 0 :(得分:2)

一位同事建议将批量插入更容易放入视图中。视图不包含标识字段或任何其他不加载的字段。

truncate table ServicerStageACS
go
BULK INSERT VW_BulkInsert_ServicerStageACS  
   FROM 'C:\POC\DataFiles\ACSDemo1.csv' 
   WITH
        (
        FIELDTERMINATOR = ',',
        ROWTERMINATOR = '\n'
        )

GO
SELECT * FROM ServicerStageACS;