如何将 JSON 数据导入 SQL Server?
JSON 指的是 Javascript 对象表示法。它是一种流行的文本数据格式,用于在现代 Web 和移动应用程序上交换数据。它基于 Javascript 编程语言的一个子集。它用于在日志文件或 NoSQL 中存储随机数据。
它还使我们能够将 NoSQL 和相关概念集成到同一个数据库中。
JSON 数据的优点:
- 轻量级数据交换格式。
- 便于人类阅读和书写。
- 易于机器解析和生成。
使用内置函数和运算符的JSON 数据:
- 我们可以解析 JSON 文本并读取或修改值。
- 将 JSON 对象转换为表格格式。
- 我们可以对转换后的 JSON 对象运行任何 Transact-SQL 查询。
- 将 Transact-SQL 查询的结果转换回 JSON 格式。
Function | Description |
---|---|
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 );
输出: