BCP-数据插入中的终止符

时间:2019-03-14 16:51:41

标签: sql-server bcp

我正在使用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结束标记的情况下结束文件?

2 个答案:

答案 0 :(得分:1)

BCP并非旨在将文件导入到单列中,因此您遇到了这些问题。要将文件导入为单个对象,请使用OPENROWSET(... SINGLE_BLOB)功能,如下所示:

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

答案 1 :(得分:0)

如果绝对肯定要使用BCP,那么XML文件通常会使用一种技巧,而JSON文件也应如此。

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

默认情况下,这会将整个XML文件作为一个单元导入。它也应该在JSON文件上工作,但我不能保证。