SQL Server BULK INSERT搞乱了varbinary

时间:2015-08-24 10:56:49

标签: sql-server

我有一个带记录的输入文件

1,2014030000000212,0x060000000000000000000000000000
1,2014030000000215,0x050000000000000000000000000000
1,2014030000000221,0x080000000000000000000000000000

我使用FormatFile

11.0
3
1       SQLINT              0       4       ","        1     ClientCode               ""
2       SQLCHAR             0       20      ","        2     AccountID                SQL_Latin1_General_CP1_CI_AS
3       SQLBINARY           0       64      "\r\n"     3     mask                     ""

当我使用BULK INSERT TempBinaryMask from 'C:\Temp\BinaryData.txt' WITH (FORMATFILE = 'C:\Temp\BinaryFormat.txt')时,它会插入数据,但它会弄乱我的varbinaries,看起来像这样

49          2014030000000212     0x3078303630303030303030303030303030303030303030303030303030303030
49          2014030000000215     0x3078303530303030303030303030303030303030303030303030303030303030
49          2014030000000221     0x3078303830303030303030303030303030303030303030303030303030303030

我也注意到我的ClientCode也错了。它是49而不是1.如果有什么我做错了吗?

这是我的表定义

CREATE TABLE TempBinaryMask 
(
    ClientCode int,
    AccountID varchar(20),
    mask varbinary(64)
)

1 个答案:

答案 0 :(得分:0)

由于某种原因,问题是FormatFile

我将输入文件更改为

1,2014030000000212,060000000000000000000000000000
1,2014030000000215,050000000000000000000000000000
1,2014030000000221,080000000000000000000000000000

并使用

BULK INSERT TempBinaryMask from 'C:\Temp\BinaryData.txt' WITH (DATAFILETYPE='char', FIELDTERMINATOR=',')

导入数据,效果很好。

我已经尝试过XML格式文件以及非XML格式文件,两者都给了我不同类型的错误