用于批量插入的字段/行终止符中的十六进制值

时间:2010-03-23 04:05:00

标签: sql-server-2005

我正在运行SQL Server 2005 Express。我正在尝试使用十六进制值0x001的字段/行终止符批量插入/导入数据文件。我应该如何在批量插入命令中表示它?

我有类似的东西:

bulk insert xxx.dbo.[yyy]
from 'D:\zzz\zzz.dat'
with (
         CODEPAGE='RAW',
         FIELDTERMINATOR = '=|=',
         ROWTERMINATOR = '=|=\001\n',
         KEEPNULLS
); 

导致

Msg 4863, Level 16, State 1, Line 7
Bulk load data conversion error (truncation) for row 1, column 3 (code).

第3列是最后一列。从字符串中删除十六进制值可以在SQL Server中正确加载,但是,我想知道是否可以在终结符中表示/使用十六进制值。

2 个答案:

答案 0 :(得分:0)

ROWTERMINATOR = '=|=01\n'

这假定文件看起来像这样,带有实际的字符串“01”

foo=/=bar=/=bob=/=01

否则,如果它是文字字符(1),则不能:Specifying Field and Row Terminators

答案 1 :(得分:0)

不,不是。它是一个实际的十六进制值0x001。答案是使用十六进制到字符串转换器来获取文字字符,并使用字符串中的文字滑稽字符到ROWTERMINATOR。