Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server SQL列数据中的空格…Msg 4863,级别16,状态1,第1行_Sql Server_Bulkinsert_Binary Data_Sqldatatypes - Fatal编程技术网

Sql server SQL列数据中的空格…Msg 4863,级别16,状态1,第1行

Sql server SQL列数据中的空格…Msg 4863,级别16,状态1,第1行,sql-server,bulkinsert,binary-data,sqldatatypes,Sql Server,Bulkinsert,Binary Data,Sqldatatypes,我正在尝试执行以下批量插入: BULK INSERT DATABASE.TABLE FROM 'C:\local\output\TESTFILE.txt' WITH (FIELDTERMINATOR = ';', ROWTERMINATOR = '\n'). 接收到以下错误: Msg 4863,16级,状态1,第1行 行1第2列BinaryString的大容量加载数据转换错误截断 TESTFILE.txt的全部内容如下: /STR_8.YOU.Test ; 1C 48 D0 00 注意:当

我正在尝试执行以下批量插入:

BULK INSERT DATABASE.TABLE FROM 'C:\local\output\TESTFILE.txt' WITH (FIELDTERMINATOR = ';', ROWTERMINATOR = '\n').
接收到以下错误:

Msg 4863,16级,状态1,第1行 行1第2列BinaryString的大容量加载数据转换错误截断

TESTFILE.txt的全部内容如下:

 /STR_8.YOU.Test ; 1C 48 D0 00
注意:当我删除二进制数据之间的空格时

 /STR_8.YOU.Test ; 1C48D000
它很好用

我的表格中有以下两列:

IDString      varchar(50)
BinaryString  varbinary(MAX)

是否有一种特殊的数据类型不仅用于解释二进制字符串,还用于解释空格字符?我尝试使用所有合理的数据类型,包括varcharMAX、varbinaryMAX、BLOB?的图像替换?。还是我需要使用一个特殊的参数来考虑空格字符?

我在这里完全抓住了要害,但bcp和二进制列似乎有问题。我记得在某个地方读到bulkinsert在后台使用bcp,所以这可能也适用于您

修复方法是为导入指定一个格式文件


希望对您有所帮助

您可以将其导入具有varcharmax第二列的暂存表,删除空格,然后将其导入目标表。感谢您的回复。我不熟悉暂存表,但您能告诉我更多关于导入到暂存表与导入到目标表的区别吗?在数据上是否有更多的宽容?我想我只是假设在现有空间中使用varchar时会遇到同样的问题。与您的建议类似,如果所有其他操作都失败,我可以在DB导入之前简单地操作数据以删除空格;我们只是希望不必执行此步骤。暂存表只是一个常规表,但其目的是临时保存数据,以便您可以在将其移动到最终目标之前对其进行清理。我假设数据中的空格对于导入到二进制列是无效的,但是导入到varchar应该没问题。对于数据中的空格,到目前为止,我还没有成功地使用任何数据类型来导入数据,包括varchar。我对格式文件不太熟悉,但会深入研究,看看它是否会起作用。谢谢您可以使用bcp为您生成格式文件。