将JSON文件导入SQL Server:导入后数据存储位置咨询
关于你提供的SQL代码的说明
这段SQL代码并没有将JSON数据导入到任何数据库表中,它只是读取JSON文件内容并解析成查询结果集——执行后只会在SQL查询工具的结果窗口展示数据,不会把数据持久化存储到数据库的表里面。
为什么找不到表名?
因为代码里只有SELECT查询逻辑,完全没有INSERT INTO或SELECT ... INTO这类将数据写入表的语句:
- 第一步用
OPENROWSET(BULK ...)把JSON文件内容读到变量@JSON里 - 接着用
OPENJSON解析JSON的层级结构,通过OUTER APPLY关联嵌套的Procedures数组,最终返回扁平化的查询结果
如果要把数据存储到表中,需要修改代码:
比如用SELECT ... INTO直接创建新表并插入数据:
DECLARE @JSON varchar(max) SELECT @JSON = BulkColumn FROM OPENROWSET (BULK 'C:\SQL\Walt\ClientReportData_02172024_012817.json', SINGLE_CLOB) import -- 新建表并插入数据,这里的dbo.CompanyProcedureData就是你指定的表名 SELECT * INTO dbo.CompanyProcedureData FROM OPENJSON (@JSON) WITH ( --Company: CompanyKey_Company varchar (255) '$.Company.CompanyKey' ,CompanyName varchar (255) '$.Company.CompanyName' ,EIN varchar (255) '$.Company.EIN' ,MaNumber varchar (255) '$.Company.MaNumber' ,ServiceLocation varchar (255) '$.Company.ServiceLocation' ,ProcJson NVARCHAR(MAX) '$.Procedures' AS JSON ) AS oj OUTER APPLY OPENJSON(oj.ProcJson) WITH ( --Procedures: ,CompanyKey_Proc varchar (255) '$.CompanyKey' ,ClientKey_Proc varchar (255) '$.ClientKey' ,ClaimKey_Proc varchar (255) '$.ClaimKey' ,ProcedureCode varchar (255) '$.ProcedureCode' ,PlaceOfService varchar (255) '$.PlaceOfService' ,FundingType varchar (255) '$.FundingType' ,IsResidential varchar (255) '$.IsResidential' ,CostCenter varchar (255) '$.CostCenter' ,DenialCode varchar (255) '$.DenialCode' ,UnitOfMeasure varchar (255) '$.UnitOfMeasure' ,PaidUnits varchar (255) '$.PaidUnits' ,Rate varchar (255) '$.Rate' )
要是你已经有现成的目标表,就用INSERT INTO ... SELECT ...格式:
INSERT INTO dbo.你的目标表名 (列名1, 列名2, ...) SELECT 对应解析出的列名1, 对应解析出的列名2, ... -- 后面跟原代码里的OPENJSON解析逻辑部分
内容的提问来源于stack exchange,提问作者smattiko84
相关产品推荐
相关产品推荐

