SQL 美国人口普查 - 空值 return
SQL on US Census - Null values return
我正在尝试从 SQL Server Studio 上的美国人口普查获取数据进行分析(港口级别的贸易数据)。我已经从他们的 API 下载了一个 JSON 文件(理想情况下,我稍后会从 SQL 工作室打电话)。然后我用 OPEN ROW SET 和 OPEN JSON 读取文件,我可以读取文件但是当我添加 with 子句来获取列时,我只得到 NULL 值。
Declare @JSON varchar(max)
SELECT @JSON=BulkColumn
FROM OPENROWSET (BULK 'C:\Users\amartinez\US.json', SINGLE_CLOB) j
SELECT * FROM OPENJSON (@JSON)
WITH (
[CTY_CODE] varchar(max) '$.CTY_CODE',
[CTY_NAME] varchar(max) '$.CTY_NAME',
[I_ENDUSE] varchar(max) '$.I_ENDUSE',
[I_ENDUSE_LDESC] varchar(max) '$.I_ENDUSE_LDESC',
[GEN_VAL_MO] int '$.GEN_VAL_MO',
[CON_VAL_MO] int '$.CON_VAL_MO',
[time] varchar(max) '$.time'
) as tradeF;
请尝试以下解决方案。
您的 JSON 是一个 JSON 数组,因此它需要稍微不同的语法。
SQL
DECLARE @JSON VARCHAR(MAX);
SELECT @JSON=BulkColumn
FROM OPENROWSET (BULK 'C:\Users\amartinez\US.json', SINGLE_CLOB) j;
SELECT tradeF.*
FROM OPENJSON (@JSON)
WITH (
[CTY_CODE] varchar(max) '$[0]',
[CTY_NAME] varchar(max) '$[1]',
[I_ENDUSE] varchar(max) '$[2]',
[I_ENDUSE_LDESC] varchar(max) '$[3]',
[GEN_VAL_MO] varchar(max) '$[4]',
[CON_VAL_MO] varchar(max) '$[5]',
[time] varchar(max) '$[6]'
) as tradeF;
我正在尝试从 SQL Server Studio 上的美国人口普查获取数据进行分析(港口级别的贸易数据)。我已经从他们的 API 下载了一个 JSON 文件(理想情况下,我稍后会从 SQL 工作室打电话)。然后我用 OPEN ROW SET 和 OPEN JSON 读取文件,我可以读取文件但是当我添加 with 子句来获取列时,我只得到 NULL 值。
Declare @JSON varchar(max)
SELECT @JSON=BulkColumn
FROM OPENROWSET (BULK 'C:\Users\amartinez\US.json', SINGLE_CLOB) j
SELECT * FROM OPENJSON (@JSON)
WITH (
[CTY_CODE] varchar(max) '$.CTY_CODE',
[CTY_NAME] varchar(max) '$.CTY_NAME',
[I_ENDUSE] varchar(max) '$.I_ENDUSE',
[I_ENDUSE_LDESC] varchar(max) '$.I_ENDUSE_LDESC',
[GEN_VAL_MO] int '$.GEN_VAL_MO',
[CON_VAL_MO] int '$.CON_VAL_MO',
[time] varchar(max) '$.time'
) as tradeF;
请尝试以下解决方案。
您的 JSON 是一个 JSON 数组,因此它需要稍微不同的语法。
SQL
DECLARE @JSON VARCHAR(MAX);
SELECT @JSON=BulkColumn
FROM OPENROWSET (BULK 'C:\Users\amartinez\US.json', SINGLE_CLOB) j;
SELECT tradeF.*
FROM OPENJSON (@JSON)
WITH (
[CTY_CODE] varchar(max) '$[0]',
[CTY_NAME] varchar(max) '$[1]',
[I_ENDUSE] varchar(max) '$[2]',
[I_ENDUSE_LDESC] varchar(max) '$[3]',
[GEN_VAL_MO] varchar(max) '$[4]',
[CON_VAL_MO] varchar(max) '$[5]',
[time] varchar(max) '$[6]'
) as tradeF;