📜  如何将 JSON 数据导入 SQL Server?

📅  最后修改于: 2022-05-13 01:54:54.650000             🧑  作者: Mango

如何将 JSON 数据导入 SQL Server?

JSON 指的是 Javascript 对象表示法。它是一种流行的文本数据格式,用于在现代 Web 和移动应用程序上交换数据。它基于 Javascript 编程语言的一个子集。它用于在日志文件或 NoSQL 中存储随机数据。

它还使我们能够将 NoSQL 和相关概念集成到同一个数据库中。

JSON 数据的优点:

  • 轻量级数据交换格式。
  • 便于人类阅读和书写。
  • 易于机器解析和生成。

使用内置函数和运算符的JSON 数据:

  • 我们可以解析 JSON 文本并读取或修改值。
  • 将 JSON 对象转换为表格格式。
  • 我们可以对转换后的 JSON 对象运行任何 Transact-SQL 查询。
  • 将 Transact-SQL 查询的结果转换回 JSON 格式。
FunctionDescription
ISJSON It tests whether a string contains JSON data or not
JSON_VALUE It extracts a scalar value from a JSON string.
JSON_QUERY It extracts an object or an array from a JSON string.
JSON_MODIFY It changes a value in a JSON string.

现在,要在 SQL 服务器中导入 JSON 数据,我们将使用 OPENROWSET (BULK)。

第 1 步:使用 OPENROWSET(BULK)



它是一个表值函数,可以从任何文件中读取数据。它返回一个包含文件所有内容的单列的表。它可以将文件的全部内容作为文本值加载。 (这个单个大值称为单字符大对象或 SINGLE_CLOB。)

句法:

SELECT * FROM OPENROWSET (BULK 'file_path', SINGLE_CLOB) as correlation_name;

它读取文件的内容并在 BulkColumn 中返回它。必须指定相关名称。我们有一个名为“file1.json”的 JSON 文件。 JSON 文件内容:

询问:

[{"Firstname": "ROMY", "Lastname": "KUMARI", "Gender": "female", "AGE" : 22 },
{"Firstname": "PUSHKAR", "Lastname": "JHA", "Gender": "male", "AGE" : 22 },
{"Firstname": "SHALINI", "Lastname": "JHA", "Gender": "female", "AGE" : 21 },
{"Firstname": "SAMBHAVI", "Lastname": "JHA", "Gender": "female", "AGE" : 18 } ]

第二步:将file1.json导入SQL server

询问:

SELECT * FROM OPENROWSET (BULK 'E:\file1.json', Single_CLOB) AS import;

输出:



整个内容作为单列返回。

第 3 步:转换 JSON 数据

  • 声明一个变量。
  • 将 Bulkcolumn 的数据存储在变量中。
  • 使用 OPENJSON()函数将 JSON 输出从变量转换为表格格式。
  • WITH 子句以及列定义(键应用作列名)。

询问:

Declare @JSON varchar(max)
SELECT @JSON=BulkColumn
FROM OPENROWSET (BULK 'E:\file1.json', SINGLE_CLOB) import
SELECT * FROM OPENJSON (@JSON)
WITH  (
   [Firstname] varchar(20),  
   [Lastname] varchar(20),  
   [Gender] varchar(20),  
   [AGE] int );

输出: