2017-06-13 58 views
2

我尝试从csv文件执行批量插入。如何在csv中为错过的列输入null?

我的csv文件有7列,但表中包含8列。

我能够使用下面的查询执行批量插入如果我的表只有8列。

BULK INSERT Table_Name FROM 'E:\file\input.csv' WITH (ROWTERMINATOR = '0x0A',CODEPAGE = 'ACP',FIELDTERMINATOR = ',',KEEPNULLS, ROWS_PER_BATCH = 10000) 

但我的CSV只包含7列,这导致下面的错误..,

Bulk load data conversion error (type mismatch or invalid character for the specified codepage) for row 1, column 8 (datecolumn). 

任何人都可以给我建议的方式来解决这个不使用的FormatFile?

+1

我还没有找到一个方法来做到这一点,所以有兴趣学习,如果是可以做到的。我所做的解决这个问题的方法是为文件中的插入创建一个“暂存”表,然后在“暂存”表中执行其他操作。 – Leonidas199x

回答

1

用7列创建一个视图,然后插入该视图。

例用更少的列:

CREATE TABLE test_table(col1 int, col2 int, col3 int) 
go 

CREATE VIEW v_test_table 
as 
SELECT col1, col2 
FROM test_table 

go 

INSERT v_test_table 
SELECT 1,2 

go 

SELECT * FROM test_table 
+0

你的意思是表格? –

+1

@prabhu在我的回答中增加了一个例子 –

+0

谢谢! –