我正在尝试导入.csv文件,但我收到了“BULK LOAD DATA CONVERSION ERROR”的最后一栏。文件看起来像:
"123456","123","001","0.00"
我试过下面的rowterminator:
ROW TERMINATOR = "\"\r\n"
什么都没有用。有关导致此记录出现此错误的原因的任何想法?感谢
答案 0 :(得分:1)
根据下面给出的示例,删除csv中的引号并使用终止符作为" \ r \ n"。
执行批量插入时始终使用格式xml。它提供了一些优点,例如数据文件的验证等。
格式文件将数据文件的字段映射到表的列。使用bcp命令或BULK INSERT或INSERT或Transact-SQL命令时,可以使用非XML或XML格式文件批量导入数据
考虑到您提供的输入文件,假设您有一个表格,如下所示:
CREATE TABLE myTestFormatFiles (
Col1 smallint,
Col2 nvarchar(50),
Col3 nvarchar(50),
Col4 nvarchar(50)
);
您的示例数据文件如下:
10,Field2,Field3,Field4
15,Field2,Field3,Field4
46,Field2,Field3,Field4
58,Field2,Field3,Field4
示例格式XML文件将是:
<?xml version="1.0"?>
<BCPFORMAT xmlns="http://schemas.microsoft.com/sqlserver/2004/bulkload/format"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<RECORD>
<FIELD ID="1" xsi:type="CharTerm" TERMINATOR="," MAX_LENGTH="7"/>
<FIELD ID="2" xsi:type="CharTerm" TERMINATOR="," MAX_LENGTH="100" COLLATION="SQL_Latin1_General_CP1_CI_AS"/>
<FIELD ID="3" xsi:type="CharTerm" TERMINATOR="," MAX_LENGTH="100" COLLATION="SQL_Latin1_General_CP1_CI_AS"/>
<FIELD ID="4" xsi:type="CharTerm" TERMINATOR="\r\n" MAX_LENGTH="100" COLLATION="SQL_Latin1_General_CP1_CI_AS"/>
</RECORD>
<ROW>
<COLUMN SOURCE="1" NAME="Col1" xsi:type="SQLSMALLINT"/>
<COLUMN SOURCE="2" NAME="Col2" xsi:type="SQLNVARCHAR"/>
<COLUMN SOURCE="3" NAME="Col3" xsi:type="SQLNVARCHAR"/>
<COLUMN SOURCE="4" NAME="Col4" xsi:type="SQLNVARCHAR"/>
</ROW>
</BCPFORMAT>
如果您不熟悉格式文件,请检查 XML Format Files (SQL Server).
示例示例here