将 JSON 文件插入 SQL Server 数据库

问题描述 投票:0回答:3

嗨,如何将

JSON
文件插入到
Database
中的单元格中?我不想存储文件路径,但想将
Content
文件的整个
JSON
存储到字段中。

我能做什么?

sql sql-server json
3个回答
1
投票

JSON 数据作为字符串存储/传输。您可以将其存储在普通的 NVARCHAR 列中。


0
投票

json 文本有多大?,具体取决于如果内容不大,则应该有一个 varchar 字段,如果有很多 json 文本,则应该有 CLOB, json 只是文本,所以你只需读取文件内容,也许是一些 transact-sql 脚本,然后将其插入表中


0
投票

如上所述,您可以将 json 文件存储在 NVARCHAR(MAX) 列中。以下是如何将 json 文件加载到 NVARCHAR(MAX) 变量中的示例。

考虑这个示例 .json 文件 top-posts.json:

[
   {
      "Id":6107,
      "Score":176,
      "ViewCount":155988,
      "Title":"What are deconvolutional layers?",
      "OwnerUserId":8820
   },
   {
      "Id":155,
      "Score":164,
      "ViewCount":25822,
      "Title":"Publicly Available Datasets",
      "OwnerUserId":227
   }
]

这是一个使用 OPENROWSET 和批量导入导入 json 文件的 SQL 脚本。我们还传入 json 文件所在文件夹的路径。它与 .sql 文件脚本放在同一文件夹中。

Sql 脚本import_json_file_openrowset.sql

DECLARE @JSONFILE VARCHAR(MAX); 

SELECT @JSONFILE = BulkColumn
FROM OPENROWSET (BULK '$(FullScriptDir)\top-posts.json', SINGLE_CLOB) AS j;

PRINT 'JsonFile contents: ' + @JSONFILE

IF (ISJSON(@JSONFILE)=1) PRINT 'It is valid Json';

这里的.bat文件将当前文件夹作为变量传递给sql脚本

runsqlscript.bat

@set FullScriptDir=%CD%
sqlcmd -S .\SQLEXPRESS  -i import_json_file_openrowset.sql

输出:

sqlcmd -S .\SQLEXPRESS  -i import_json_file_openrowset.sql
JsonFile contents: [
   {
      "Id":6107,
      "Score":176,
      "ViewCount":155988,
      "Title":"Toreboss: What are deconvolutional layers?",
      "OwnerUserId":8820
   },
   {
      "Id":155,
      "Score":164,
      "ViewCount":25822,
      "Title":"Publicly Available Datasets",
      "OwnerUserId":227
   }
]
It is valid Json

使用变量 JSONFILE,您可以对其执行任何操作,例如将其插入到表的新行中的列中。

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