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,则有一种技巧通常用于XML文件,该技巧也应适用于JSON文件。

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

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

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