【发布时间】:2019-06-19 18:44:20
【问题描述】:
我正在尝试使用 XML 格式文件将 CSV 文件批量插入 SQL Server 2017:
<?xml version="1.0"?>
<BCPFORMAT xmlns="https://schemas.microsoft.com/sqlserver/2004/bulkload/format" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<RECORD>
<FIELD ID="Col_0" xsi:type="CharTerm" MAX_LENGTH="100" TERMINATOR=","/>
<FIELD ID="Col_1" xsi:type="CharTerm" MAX_LENGTH="100" TERMINATOR=","/>
<FIELD ID="Col_2" xsi:type="CharTerm" MAX_LENGTH="3" TERMINATOR=","/>
<FIELD ID="Col_3" xsi:type="CharFixed" Length="19" TERMINATOR=","/>
<FIELD ID="Col_4" xsi:type="CharFixed" Length="19" TERMINATOR=","/>
<FIELD ID="Col_5" xsi:type="CharFixed" Length="53" TERMINATOR=","/>
<FIELD ID="Col_6" xsi:type="CharFixed" Length="10" TERMINATOR=","/>
</RECORD>
<ROW>
<COLUMN SOURCE="Col_0" NAME="NAME" xsi:type="SQLVARCHAR"/>
<COLUMN SOURCE="Col_1" NAME="MATCHNAME" xsi:type="SQLVARCHAR"/>
<COLUMN SOURCE="Col_2" NAME="CHROMOSOME" xsi:type="SQLVARCHAR"/>
<COLUMN SOURCE="Col_3" NAME="START_LOCATION" xsi:type="SQLBIGINT"/>
<COLUMN SOURCE="Col_4" NAME="END_LOCATION" xsi:type="SQLBIGINT"/>
<COLUMN SOURCE="Col_5" NAME="CENTIMORGANS" xsi:type="SQLFLT4"/>
<COLUMN SOURCE="Col_6" NAME="MATCHING_SNPS" xsi:type="SQLSMALLINT"/>
</ROW>
</BCPFORMAT>
执行此操作时,我收到以下错误消息:
执行期间出错 37000(4855)[Microsoft][ODBC SQL Server Driver][SQL Server]格式文件“c:\temp\FormatFile.xml”中的第 2 行:意外元素“BCPFORMAT”。
我不明白为什么无法识别 BCPFORMAT 元素。 XML 根据 Altova XMYSpy 正确格式化。
执行上传的代码是:
bulk insert FF_ChromBrwResults_20190124 from 'c:\temp\temp.csv'
with (FIELDTERMINATOR = ',',FIRSTROW =1,ROWTERMINATOR = '\n'
,KEEPIDENTITY,CODEPAGE ='OEM',KEEPNULLS, FORMATFILE = 'c:\temp\FormatFile.xml' )
CSV 有很多行采用这种格式,以换行符结尾:
姓名1,姓名2, 1,48745397,54260005,2.84,1000
我尝试从 .NET 代码和 ODBC 连接工作的 AQT 中执行此操作;两种方法都产生相同的错误。
【问题讨论】:
标签: sql-server bulkinsert