将 JSON 数据从 JSON 文件导入 SQL 服务器
Importing JSON data from a JSON file into SQL Server
我有一个 JSON 文件,它是这样的:
{"Rows":
[{"a":"abc"
,"b":"def"
,"c":"x"
,"d":"yuy"
,"e":"aaa"
,"f":"bcb"
,"g":"wer"
,"h":"www"
,"i":123
,"j":456.0
,"k":"12/1/1999 12:02:49 AM"
,"l":1.000
,"m":52.10
,"n":12.990
,"o":8.40
,"p":3
,"q":8.37
,"r":63.0
,"s":7.2
,"t":"1-dfbaaaf"
,"u":"dppp-9c1"
,"v":"12/28/2066 6:02:48 AM"
,"w":"2824865"
,"x":"123"
,"y":"2-1c-847a-06e27"}
]}
我试过下面的代码,它给了我所有 null
行:
DECLARE @JSON varchar(max)
SELECT @JSON = BulkColumn
FROM OPENROWSET (BULK 'C:\f1.json', SINGLE_CLOB) AS j
SELECT *
FROM OPENJSON (@JSON)
WITH (
[a] [nvarchar](50) ,
[b] [nvarchar](50) ,
[c] [nvarchar](50) ,
[d] [int] ,
[e] [nvarchar](50) ,
[f] [nvarchar](50) ,
[g] [nvarchar](50) ,
[h] [nvarchar](50) ,
[i] [nvarchar](50) ,
[j] [nvarchar](50),
[k] [datetime2](7) ,
[l] [nvarchar](50) ,
[m] [nvarchar](50) ,
[n] [nvarchar](50) ,
[o] [nvarchar](50) ,
[p] [nvarchar](50),
[q] [nvarchar](50) ,
[r] [nvarchar](50) ,
[s] [nvarchar](50) ,
[t] [nvarchar](50) ,
[u] [nvarchar](50),
[v] [datetime2](7) ,
[w] [nvarchar](50),
x [nvarchar](50),
y [nvarchar](500)
)
我也试过 CROSS APPLY
,但我只得到空值。
SELECT *
INTO dbo.Test_JSON
FROM OPENROWSET (BULK 'C\f1.json', Single_CLOB) AS import;
SELECT b, c
FROM dbo.Test_JSON
CROSS APPLY OPENJSON (BUlkColumn)
WITH
(
[Rows] nvarchar(max) AS json,
a uniqueidentifier,
b varchar(50),
c varchar(50)
);
非常感谢任何帮助,我也需要 Azure 数据仓库的解决方案,我想为 SQL 服务器和 Azure 数据仓库实施解决方案。
尝试外部应用并注意对行使用 AS JSON。我只是把第一个属性带回来。
SELECT a FROM OPENJSON(@JSON)
WITH (
Rows nvarchar(max) AS JSON) Rows
OUTER APPLY OPENJSON(Rows.Rows)
WITH (
a nvarchar(254) '$.a') MyObject
您只需要 path
(在您的情况下是 $.Rows
)在您的 OPENJSON()
电话中:
SELECT *
FROM OPENJSON (@JSON, '$.Rows')
WITH (
[a] [nvarchar](50) ,
...
[y] [nvarchar](500)
)
另请注意,实际示例数据与显式模式(WITH
子句)中的列数据类型不匹配。
Kindly try this..
DECLARE @json NVARCHAR(MAX);
SET @json='{ "a":"abc" ,"b":"def" ,"c":"x" ,"d":"yuy" ,"e":"aaa" ,"f":"bcb" ,"g":"wer" ,"h":"www" ,"i":123 ,"j":456.0 ,"k":"12/1/1999 12:02:49 AM" ,"l":1.000 ,"m":52.10 ,"n":12.990 ,"o":8.40 ,"p":3 ,"q":8.37 ,"r":63.0 ,"s":7.2 ,"t":"1-dfbaaaf" ,"u":"dppp-9c1" ,"v":"12/28/2066 6:02:48 AM" ,"w":"2824865" ,"x":"123" ,"y":"2-1c-847a-06e27"}'
select * from OPENJSON(@json)
------------------------------------------------------------------------
我有一个 JSON 文件,它是这样的:
{"Rows":
[{"a":"abc"
,"b":"def"
,"c":"x"
,"d":"yuy"
,"e":"aaa"
,"f":"bcb"
,"g":"wer"
,"h":"www"
,"i":123
,"j":456.0
,"k":"12/1/1999 12:02:49 AM"
,"l":1.000
,"m":52.10
,"n":12.990
,"o":8.40
,"p":3
,"q":8.37
,"r":63.0
,"s":7.2
,"t":"1-dfbaaaf"
,"u":"dppp-9c1"
,"v":"12/28/2066 6:02:48 AM"
,"w":"2824865"
,"x":"123"
,"y":"2-1c-847a-06e27"}
]}
我试过下面的代码,它给了我所有 null
行:
DECLARE @JSON varchar(max)
SELECT @JSON = BulkColumn
FROM OPENROWSET (BULK 'C:\f1.json', SINGLE_CLOB) AS j
SELECT *
FROM OPENJSON (@JSON)
WITH (
[a] [nvarchar](50) ,
[b] [nvarchar](50) ,
[c] [nvarchar](50) ,
[d] [int] ,
[e] [nvarchar](50) ,
[f] [nvarchar](50) ,
[g] [nvarchar](50) ,
[h] [nvarchar](50) ,
[i] [nvarchar](50) ,
[j] [nvarchar](50),
[k] [datetime2](7) ,
[l] [nvarchar](50) ,
[m] [nvarchar](50) ,
[n] [nvarchar](50) ,
[o] [nvarchar](50) ,
[p] [nvarchar](50),
[q] [nvarchar](50) ,
[r] [nvarchar](50) ,
[s] [nvarchar](50) ,
[t] [nvarchar](50) ,
[u] [nvarchar](50),
[v] [datetime2](7) ,
[w] [nvarchar](50),
x [nvarchar](50),
y [nvarchar](500)
)
我也试过 CROSS APPLY
,但我只得到空值。
SELECT *
INTO dbo.Test_JSON
FROM OPENROWSET (BULK 'C\f1.json', Single_CLOB) AS import;
SELECT b, c
FROM dbo.Test_JSON
CROSS APPLY OPENJSON (BUlkColumn)
WITH
(
[Rows] nvarchar(max) AS json,
a uniqueidentifier,
b varchar(50),
c varchar(50)
);
非常感谢任何帮助,我也需要 Azure 数据仓库的解决方案,我想为 SQL 服务器和 Azure 数据仓库实施解决方案。
尝试外部应用并注意对行使用 AS JSON。我只是把第一个属性带回来。
SELECT a FROM OPENJSON(@JSON)
WITH (
Rows nvarchar(max) AS JSON) Rows
OUTER APPLY OPENJSON(Rows.Rows)
WITH (
a nvarchar(254) '$.a') MyObject
您只需要 path
(在您的情况下是 $.Rows
)在您的 OPENJSON()
电话中:
SELECT *
FROM OPENJSON (@JSON, '$.Rows')
WITH (
[a] [nvarchar](50) ,
...
[y] [nvarchar](500)
)
另请注意,实际示例数据与显式模式(WITH
子句)中的列数据类型不匹配。
Kindly try this..
DECLARE @json NVARCHAR(MAX);
SET @json='{ "a":"abc" ,"b":"def" ,"c":"x" ,"d":"yuy" ,"e":"aaa" ,"f":"bcb" ,"g":"wer" ,"h":"www" ,"i":123 ,"j":456.0 ,"k":"12/1/1999 12:02:49 AM" ,"l":1.000 ,"m":52.10 ,"n":12.990 ,"o":8.40 ,"p":3 ,"q":8.37 ,"r":63.0 ,"s":7.2 ,"t":"1-dfbaaaf" ,"u":"dppp-9c1" ,"v":"12/28/2066 6:02:48 AM" ,"w":"2824865" ,"x":"123" ,"y":"2-1c-847a-06e27"}'
select * from OPENJSON(@json)
------------------------------------------------------------------------