Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将嵌套的JSON数据加载到MS SQL中(返回空值)_Sql_Json_Sql Server_Nested - Fatal编程技术网

将嵌套的JSON数据加载到MS SQL中(返回空值)

将嵌套的JSON数据加载到MS SQL中(返回空值),sql,json,sql-server,nested,Sql,Json,Sql Server,Nested,我将一个非常简单的JSON文件引入MS SQL数据库。我已经创建了表,当我进行查询时,除了一个名为“Address”的嵌套部分外,我可以将所有数据都处理得很好 JSON的片段: { "sold_price": Sample, "auction_date": "Sample", "address": { "state": "Sample", "street": "Sample", "number": "Sample", "suburb":

我将一个非常简单的JSON文件引入MS SQL数据库。我已经创建了表,当我进行查询时,除了一个名为“Address”的嵌套部分外,我可以将所有数据都处理得很好

JSON的片段:

{
   "sold_price": Sample,
   "auction_date": "Sample",
"address": {
      "state": "Sample",
      "street": "Sample",
      "number": "Sample",
      "suburb": "Sample",
      "postcode": "Sample",
      "country": "Sample"
   },
   },
   "REA_Agent": "Sample",
   "sale_date": "2018-08-03 00:13:04+00:00",
 },
DECLARE @BT1 VARCHAR(MAX)

SELECT @BT1 = 
BulkColumn
FROM OPENROWSET(BULK'C:\JSON Test\BT1.json', SINGLE_BLOB) JSON

SELECT @BT1 as BT1_Table;

IF (ISJSON(@BT1) = 1)
BEGIN
PRINT 'JSON File is valid';

INSERT INTO BT1
SELECT *
FROM OPENJSON(@BT1)
WITH(

[state]                 VARCHAR(MAX)    '$.state',
[number]                VARCHAR(MAX)    '$.number',
[street]                VARCHAR(MAX)    '$.street',
[suburb]                VARCHAR(MAX)    '$.suburb',
[postcode]              INTEGER         '$.postcode',
[property_type]         VARCHAR(MAX)    '$.property_type',
[sold_price]            VARCHAR(MAX)    '$.sold_price',
[sold_date]             DATE            '$.sold_date',
[settlement_date]       DATE            '$.settlement_date',
[agency_name]           VARCHAR(MAX)    '$.agency_name',
[bedrooms]              INTEGER         '$.bedrooms',
[bathrooms]             INTEGER         '$.bathrooms',
[parking]               INTEGER         '$.parking',
[auction_date]          DATE            '$.auction_date',
[passed_in]             VARCHAR(MAX)    '$.passed_in',
[will_disclose_sold]    VARCHAR(MAX)    '$.will_disclose_sold'

)
END
ELSE
BEGIN
PRINT 'JSON File is invalid';
END
加载JSON的过程:

{
   "sold_price": Sample,
   "auction_date": "Sample",
"address": {
      "state": "Sample",
      "street": "Sample",
      "number": "Sample",
      "suburb": "Sample",
      "postcode": "Sample",
      "country": "Sample"
   },
   },
   "REA_Agent": "Sample",
   "sale_date": "2018-08-03 00:13:04+00:00",
 },
DECLARE @BT1 VARCHAR(MAX)

SELECT @BT1 = 
BulkColumn
FROM OPENROWSET(BULK'C:\JSON Test\BT1.json', SINGLE_BLOB) JSON

SELECT @BT1 as BT1_Table;

IF (ISJSON(@BT1) = 1)
BEGIN
PRINT 'JSON File is valid';

INSERT INTO BT1
SELECT *
FROM OPENJSON(@BT1)
WITH(

[state]                 VARCHAR(MAX)    '$.state',
[number]                VARCHAR(MAX)    '$.number',
[street]                VARCHAR(MAX)    '$.street',
[suburb]                VARCHAR(MAX)    '$.suburb',
[postcode]              INTEGER         '$.postcode',
[property_type]         VARCHAR(MAX)    '$.property_type',
[sold_price]            VARCHAR(MAX)    '$.sold_price',
[sold_date]             DATE            '$.sold_date',
[settlement_date]       DATE            '$.settlement_date',
[agency_name]           VARCHAR(MAX)    '$.agency_name',
[bedrooms]              INTEGER         '$.bedrooms',
[bathrooms]             INTEGER         '$.bathrooms',
[parking]               INTEGER         '$.parking',
[auction_date]          DATE            '$.auction_date',
[passed_in]             VARCHAR(MAX)    '$.passed_in',
[will_disclose_sold]    VARCHAR(MAX)    '$.will_disclose_sold'

)
END
ELSE
BEGIN
PRINT 'JSON File is invalid';
END
什么不起作用:

{
   "sold_price": Sample,
   "auction_date": "Sample",
"address": {
      "state": "Sample",
      "street": "Sample",
      "number": "Sample",
      "suburb": "Sample",
      "postcode": "Sample",
      "country": "Sample"
   },
   },
   "REA_Agent": "Sample",
   "sale_date": "2018-08-03 00:13:04+00:00",
 },
DECLARE @BT1 VARCHAR(MAX)

SELECT @BT1 = 
BulkColumn
FROM OPENROWSET(BULK'C:\JSON Test\BT1.json', SINGLE_BLOB) JSON

SELECT @BT1 as BT1_Table;

IF (ISJSON(@BT1) = 1)
BEGIN
PRINT 'JSON File is valid';

INSERT INTO BT1
SELECT *
FROM OPENJSON(@BT1)
WITH(

[state]                 VARCHAR(MAX)    '$.state',
[number]                VARCHAR(MAX)    '$.number',
[street]                VARCHAR(MAX)    '$.street',
[suburb]                VARCHAR(MAX)    '$.suburb',
[postcode]              INTEGER         '$.postcode',
[property_type]         VARCHAR(MAX)    '$.property_type',
[sold_price]            VARCHAR(MAX)    '$.sold_price',
[sold_date]             DATE            '$.sold_date',
[settlement_date]       DATE            '$.settlement_date',
[agency_name]           VARCHAR(MAX)    '$.agency_name',
[bedrooms]              INTEGER         '$.bedrooms',
[bathrooms]             INTEGER         '$.bathrooms',
[parking]               INTEGER         '$.parking',
[auction_date]          DATE            '$.auction_date',
[passed_in]             VARCHAR(MAX)    '$.passed_in',
[will_disclose_sold]    VARCHAR(MAX)    '$.will_disclose_sold'

)
END
ELSE
BEGIN
PRINT 'JSON File is invalid';
END
加载后-我只运行了一个基本的Select*来查看,“Address”中的所有字段都返回空值


这里有我错过的把戏吗?我所有的调用都返回NULL,我不知道为什么。(如果我可以缩短进程,很高兴收到关于我的代码的反馈/犯了错误)

您想从名为
address
的嵌套元素中读取数据,因此您必须在
中指定
.address
,并为来自嵌套部分的每个值指定
子句:

INSERT INTO BT1
SELECT *
FROM OPENJSON(@BT1)
WITH(
[state]                 VARCHAR(MAX)    '$.address.state',   --<< added ".address"
[number]                VARCHAR(MAX)    '$.address.number',  --<< added ".address"
[street]                VARCHAR(MAX)    '$.address.street',  --<< added ".address"
[suburb]                VARCHAR(MAX)    '$.address.suburb',  --<< added ".address"
[postcode]              INTEGER         '$.address.postcode',--<< added ".address"
[sold_price]            VARCHAR(MAX)    '$.sold_price',
[auction_date]          DATE            '$.auction_date',
[sold_date]             DATE            '$.sold_date',
[settlement_date]       DATE            '$.settlement_date',
[agency_name]           VARCHAR(MAX)    '$.agency_name',
[bedrooms]              INTEGER         '$.bedrooms',
[bathrooms]             INTEGER         '$.bathrooms',
[parking]               INTEGER         '$.parking',
[passed_in]             VARCHAR(MAX)    '$.passed_in',
[will_disclose_sold]    VARCHAR(MAX)    '$.will_disclose_sold',
[property_type]         VARCHAR(MAX)    '$.property_type'
)
如果这与您的结构不同,请更新您的问题并让我知道