我正在尝试对.txt文件使用批量插入,该文件使用逗号分隔,但是一些列也有双引号,因此在使用批量插入时,某些行未正确插入。 / p>
我正在使用带有fmt文件的批量插入但它仍然给我错误:无法批量加载。格式文件" \ server \ Data \ Transfer \ formatfile1.fmt"中的列号无效。
我没有选择去思考我创建的格式文件有什么问题。
以下是.txt格式的数据
"NUMBER","DATE","JOIN_NUMBER","CEO","FAX","ACTNUM"
1,3/31/2005 0:00:00,2,,"9037983933",5
6,3/31/2005 0:00:00,7,,"5048899070",7
7,3/31/2005 0:00:00,8,,"2289384313",7
12,3/31/2005 0:00:00,11,"Tom Johnson, SVP","8607611980",8
13,3/31/2005 0:00:00,12,,"2252146851",3
这是格式文件:
13.0
6
1 SQLCHAR 0 5 ",\"" 1 NUMBER SQL_Latin1_General_CP1_CI_AS
2 SQLCHAR 0 50 ",\"" 2 DATE SQL_Latin1_General_CP1_CI_AS
3 SQLCHAR 0 20 ",\"" 3 JOIN_NUMBER SQL_Latin1_General_CP1_CI_AS
4 SQLCHAR 0 500 "\",\"" 4 CEO SQL_Latin1_General_CP1_CI_AS
5 SQLCHAR 0 12 "\",\"" 5 Fax SQL_Latin1_General_CP1_CI_AS
6 SQLCHAR 0 10 "\"\r\n" 6 ACTNUM SQL_Latin1_General_CP1_CI_AS
我正在使用SQL Server 2016.
这是我尝试用于批量插入的SQL代码:
GO
SET ANSI_WARNINGS OFF
GO
BULK INSERT FDICDev.dbo.fs220D_test
FROM '\\server\Data\Transfer\textdata.txt'
WITH ( FIRSTROW = 2,
FIELDTERMINATOR = ',',
ROWTERMINATOR = '\n',
FORMATFILE = '\\server\Data\Transfer\formatfile1.fmt' )
有人可以指出这里发生的问题!!!
答案 0 :(得分:0)
您的格式文件错误。您告诉它期望双引号字符作为列终止符的一部分,以及每列。但是,只有第5和第6列符合报价。
只是逗号的终结符应该用template<typename... Ts>
constexpr void PrintTuple(std::tuple<Ts...>& tuple)
表示。
只有在逗号的两边都需要引号字符时才应包含","
。