读书人

bulk insert 大容量加载: 在数据文件中

发布时间: 2012-09-02 21:00:34 作者: rapoo

bulk insert 大容量加载: 在数据文件中遇到意外的文件结尾

SQL code
CREATE TABLE [dbo].[TempTrans](    [TransactionsDate] [nvarchar](max) NULL,    [PosNumber] [nvarchar](max) NULL,    [AccountNumber] [nvarchar](max) NULL,    [CardNumber] [nvarchar](max) NULL,    [TransType1] [nvarchar](max) NULL,    [TransType2] [nvarchar](max) NULL,    [TransType3] [nvarchar](max) NULL,    [TransAmount] [nvarchar](max) NULL,    [TransType4] [nvarchar](max) NULL,    [TransType5] [nvarchar](max) NULL,    [TransType6] [nvarchar](max) NULL,    [TransType7] [nvarchar](max) NULL,    [TransType8] [nvarchar](max) NULL,    [TransType9] [nvarchar](max) NULL,    [TransType10] [nvarchar](max) NULL,    [TransType11] [nvarchar](max) NULL,    [TransType12] [nvarchar](max) NULL,    [TransType13] [nvarchar](max) NULL,    [TransType14] [nvarchar](max) NULL,    [TransType15] [nvarchar](max) NULL,    [TransType16] [nvarchar](max) NULL,    [TransType17] [nvarchar](max) NULL,    [TransType18] [nvarchar](max) NULL,    [TransType19] [nvarchar](max) NULL,    [TransType20] [nvarchar](max) NULL,    [TransType21] [nvarchar](max) NULL,    [TransType22] [nvarchar](max) NULL,    [TransType23] [nvarchar](max) NULL,    [TransType24] [nvarchar](max) NULL,    [TransType25] [nvarchar](max) NULL,    [TransType26] [nvarchar](max) NULL,    [TransType27] [nvarchar](max) NULL,    [TransType28] [nvarchar](max) NULL    ) 


test.xml
XML code
<?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="\t" COLLATION="Chinese_PRC_CI_AS"/>  <FIELD ID="2" xsi:type="CharTerm" TERMINATOR="\t" COLLATION="Chinese_PRC_CI_AS"/>  <FIELD ID="3" xsi:type="CharTerm" TERMINATOR="\t" COLLATION="Chinese_PRC_CI_AS"/>  <FIELD ID="4" xsi:type="CharTerm" TERMINATOR="\t" COLLATION="Chinese_PRC_CI_AS"/>  <FIELD ID="5" xsi:type="CharTerm" TERMINATOR="\t" COLLATION="Chinese_PRC_CI_AS"/>  <FIELD ID="6" xsi:type="CharTerm" TERMINATOR="\t" COLLATION="Chinese_PRC_CI_AS"/>  <FIELD ID="7" xsi:type="CharTerm" TERMINATOR="\t" COLLATION="Chinese_PRC_CI_AS"/>  <FIELD ID="8" xsi:type="CharTerm" TERMINATOR="\t" COLLATION="Chinese_PRC_CI_AS"/>  <FIELD ID="9" xsi:type="CharTerm" TERMINATOR="\t" COLLATION="Chinese_PRC_CI_AS"/>  <FIELD ID="10" xsi:type="CharTerm" TERMINATOR="\t" COLLATION="Chinese_PRC_CI_AS"/>  <FIELD ID="11" xsi:type="CharTerm" TERMINATOR="\t" COLLATION="Chinese_PRC_CI_AS"/>  <FIELD ID="12" xsi:type="CharTerm" TERMINATOR="\t" COLLATION="Chinese_PRC_CI_AS"/>  <FIELD ID="13" xsi:type="CharTerm" TERMINATOR="\t" COLLATION="Chinese_PRC_CI_AS"/>  <FIELD ID="14" xsi:type="CharTerm" TERMINATOR="\t" COLLATION="Chinese_PRC_CI_AS"/>  <FIELD ID="15" xsi:type="CharTerm" TERMINATOR="\t" COLLATION="Chinese_PRC_CI_AS"/>  <FIELD ID="16" xsi:type="CharTerm" TERMINATOR="\t" COLLATION="Chinese_PRC_CI_AS"/>  <FIELD ID="17" xsi:type="CharTerm" TERMINATOR="\t" COLLATION="Chinese_PRC_CI_AS"/>  <FIELD ID="18" xsi:type="CharTerm" TERMINATOR="\t" COLLATION="Chinese_PRC_CI_AS"/>  <FIELD ID="19" xsi:type="CharTerm" TERMINATOR="\t" COLLATION="Chinese_PRC_CI_AS"/>  <FIELD ID="20" xsi:type="CharTerm" TERMINATOR="\t" COLLATION="Chinese_PRC_CI_AS"/>  <FIELD ID="21" xsi:type="CharTerm" TERMINATOR="\t" COLLATION="Chinese_PRC_CI_AS"/>  <FIELD ID="22" xsi:type="CharTerm" TERMINATOR="\t" COLLATION="Chinese_PRC_CI_AS"/>  <FIELD ID="23" xsi:type="CharTerm" TERMINATOR="\t" COLLATION="Chinese_PRC_CI_AS"/>  <FIELD ID="24" xsi:type="CharTerm" TERMINATOR="\t" COLLATION="Chinese_PRC_CI_AS"/>  <FIELD ID="25" xsi:type="CharTerm" TERMINATOR="\t" COLLATION="Chinese_PRC_CI_AS"/>  <FIELD ID="26" xsi:type="CharTerm" TERMINATOR="\t" COLLATION="Chinese_PRC_CI_AS"/>  <FIELD ID="27" xsi:type="CharTerm" TERMINATOR="\t" COLLATION="Chinese_PRC_CI_AS"/>  <FIELD ID="28" xsi:type="CharTerm" TERMINATOR="\t" COLLATION="Chinese_PRC_CI_AS"/>  <FIELD ID="29" xsi:type="CharTerm" TERMINATOR="\t" COLLATION="Chinese_PRC_CI_AS"/>  <FIELD ID="30" xsi:type="CharTerm" TERMINATOR="\t" COLLATION="Chinese_PRC_CI_AS"/>  <FIELD ID="31" xsi:type="CharTerm" TERMINATOR="\t" COLLATION="Chinese_PRC_CI_AS"/>  <FIELD ID="32" xsi:type="CharTerm" TERMINATOR="\t" COLLATION="Chinese_PRC_CI_AS"/>  <FIELD ID="33" xsi:type="CharTerm" TERMINATOR="\r\n" COLLATION="Chinese_PRC_CI_AS"/> </RECORD> <ROW>  <COLUMN SOURCE="1" NAME="TransactionsDate" xsi:type="SQLNVARCHAR"/>  <COLUMN SOURCE="2" NAME="PosNumber" xsi:type="SQLNVARCHAR"/>  <COLUMN SOURCE="3" NAME="AccountNumber" xsi:type="SQLNVARCHAR"/>  <COLUMN SOURCE="4" NAME="CardNumber" xsi:type="SQLNVARCHAR"/>  <COLUMN SOURCE="5" NAME="TransType1" xsi:type="SQLNVARCHAR"/>  <COLUMN SOURCE="6" NAME="TransType2" xsi:type="SQLNVARCHAR"/>  <COLUMN SOURCE="7" NAME="TransType3" xsi:type="SQLNVARCHAR"/>  <COLUMN SOURCE="8" NAME="TransAmount" xsi:type="SQLNVARCHAR"/>  <COLUMN SOURCE="9" NAME="TransType4" xsi:type="SQLNVARCHAR"/>  <COLUMN SOURCE="10" NAME="TransType5" xsi:type="SQLNVARCHAR"/>  <COLUMN SOURCE="11" NAME="TransType6" xsi:type="SQLNVARCHAR"/>  <COLUMN SOURCE="12" NAME="TransType7" xsi:type="SQLNVARCHAR"/>  <COLUMN SOURCE="13" NAME="TransType8" xsi:type="SQLNVARCHAR"/>  <COLUMN SOURCE="14" NAME="TransType9" xsi:type="SQLNVARCHAR"/>  <COLUMN SOURCE="15" NAME="TransType10" xsi:type="SQLNVARCHAR"/>  <COLUMN SOURCE="16" NAME="TransType11" xsi:type="SQLNVARCHAR"/>  <COLUMN SOURCE="17" NAME="TransType12" xsi:type="SQLNVARCHAR"/>  <COLUMN SOURCE="18" NAME="TransType13" xsi:type="SQLNVARCHAR"/>  <COLUMN SOURCE="19" NAME="TransType14" xsi:type="SQLNVARCHAR"/>  <COLUMN SOURCE="20" NAME="TransType15" xsi:type="SQLNVARCHAR"/>  <COLUMN SOURCE="21" NAME="TransType16" xsi:type="SQLNVARCHAR"/>  <COLUMN SOURCE="22" NAME="TransType17" xsi:type="SQLNVARCHAR"/>  <COLUMN SOURCE="23" NAME="TransType18" xsi:type="SQLNVARCHAR"/>  <COLUMN SOURCE="24" NAME="TransType19" xsi:type="SQLNVARCHAR"/>  <COLUMN SOURCE="25" NAME="TransType20" xsi:type="SQLNVARCHAR"/>  <COLUMN SOURCE="26" NAME="TransType21" xsi:type="SQLNVARCHAR"/>  <COLUMN SOURCE="27" NAME="TransType22" xsi:type="SQLNVARCHAR"/>  <COLUMN SOURCE="28" NAME="TransType23" xsi:type="SQLNVARCHAR"/>  <COLUMN SOURCE="29" NAME="TransType24" xsi:type="SQLNVARCHAR"/>  <COLUMN SOURCE="30" NAME="TransType25" xsi:type="SQLNVARCHAR"/>  <COLUMN SOURCE="31" NAME="TransType26" xsi:type="SQLNVARCHAR"/>  <COLUMN SOURCE="32" NAME="TransType27" xsi:type="SQLNVARCHAR"/>  <COLUMN SOURCE="33" NAME="TransType28" xsi:type="SQLNVARCHAR"/> </ROW></BCPFORMAT> 



数据格式 http://hdshipin.w318.bizcn.com/data.txt

操作

SQL code
BULK INSERT TempTrans  FROM 'C:/data.txt'  WITH  (      FORMATFILE = 'C:/test.xml' ) 


报错:

消息 4832,级别 16,状态 1,第 1 行
大容量加载: 在数据文件中遇到意外的文件结尾。
消息 7399,级别 16,状态 1,第 1 行
链接服务器 "(null)" 的 OLE DB 访问接口 "BULK" 报错。提供程序未给出有关错误的任何信息。
消息 7330,级别 16,状态 2,第 1 行
无法从链接服务器 "(null)" 的 OLE DB 访问接口"BULK"提取行。



[解决办法]
data.txt根本不是\t分隔,而是数量不等的空格,当然意外的文件结尾。
[解决办法]
探讨

另外数据之间的空格是不固定的,有的之间有一个空格,有点两个,三个。。。
这个要怎么处理

[解决办法]
探讨

引用:
不是所有字段都要插入到数据库的,所以必须要格式文件

2楼的代码测试insert成功的.

[解决办法]
探讨
成功是成功,不过很多NULL而已,人家的TXT是没有NULL的。

[解决办法]
探讨

引用:

引用:

另外数据之间的空格是不固定的,有的之间有一个空格,有点两个,三个。。。
这个要怎么处理


我看了一下,可以按定长处理。

分隔符是空格,这个再写xml没注意弄错了。

现在的问题是空格怎么处理,如何正确对应地段。
好几千行的数据,之间的空格都是不固定的,可能一个也可能好多个。

[解决办法]
最后一列都补足空格,定长,错不了。

你懒得数长度,SSIS也可以,你封装个CLR正则也可以,大把方法。
[解决办法]
探讨

最后一列都补足空格,定长,错不了。

你懒得数长度,SSIS也可以,你封装个CLR正则也可以,大把方法。

读书人网 >SQL Server

热点推荐