代码之家  ›  专栏  ›  技术社区  ›  DC07

bcp-数据插入中的inlcude终止符

  •  0
  • DC07  · 技术社区  · 5 年前

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

    0 回复  |  直到 5 年前
        1
  •  1
  •   Laughing Vergil    5 年前

    bcp不是为将文件导入到单个列而设计的,因此您会遇到这些问题。要将文件作为单个对象导入,请使用openrowset(…单块)功能,如:

    INSERT INTO JsonTable(jsonColumn)
    SELECT BulkColumn
    FROM OPENROWSET (BULK ‘TextFile Path’, SINGLE_BLOB) FileName
    
        2
  •  0
  •   Laughing Vergil    5 年前

    如果您确实必须使用bcp,那么有一个技巧通常用于xml文件,它也应该用于json文件。

    1. 不添加行结束符值
    2. 使您的字段终止符值绝对肯定地不能存在于JSON文件中,例如“\\ 0 \ 0 \ 0”(这是NoL+~+两个空值+~)。如果这可能存在于JSON中,请尝试其他值。只是确保它不能存在于文件中。

    默认情况下,这会将整个XML文件作为一个单元导入。它 应该 也可以处理json文件,但我不能保证。