BCP - 在数据插入中包含终止符

问题描述 投票:1回答:2

我正在使用BCP将json文件加载到SQL Server(是的,我知道有更好的方法,但需要尝试这个)

问题是,json文档没有正确形成,因为格式文件中的终结符正在被删除,但我希望它包含在内

bcp db.dbo.test IN G:\JSON\json.out  -f G:\JSON\formatfile.out -T

格式文件终止符:

  <FIELD ID="1" xsi:type="CharTerm" TERMINATOR="] }" COLLATION="Latin1_General_CI_AI"/>

如何在不截断json结束标记的情况下结束文件?

sql-server bcp
2个回答
1
投票

BCP不是为将文件导入单个列而设计的,因此您会遇到这些问题。要将文件作为单个对象导入,请使用OPENROWSET(... SINGLE_BLOB)功能,如下所示:

INSERT INTO JsonTable(jsonColumn)
SELECT BulkColumn
FROM OPENROWSET (BULK ‘TextFile Path’, SINGLE_BLOB) FileName

0
投票

如果你绝对必须使用BCP,那么通常还有一个技巧可用于适用于JSON文件的XML文件。

  1. 不要添加行终止符值
  2. 使你的Field终结符值在JSON文件中绝对,肯定,不存在,例如'\ 0~ \ 0 \ 0~'(这是NULL +〜+两个NULL +〜)。如果这可能存在于JSON中,请尝试其他一些值。只需确保它不能存在于文件中。

默认情况下,这会将整个XML文件作为一个单元导入。它也应该适用于JSON文件,但我无法保证。

© www.soinside.com 2019 - 2024. All rights reserved.