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;

Input file

请尝试以下解决方案。

您的 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;