摘要:
在开发业务系统时,对于使用SQL Server作为业务数据库时,要将数据从发库数据配置完成后需要同步到生产库时,使用SQL Server自带的工具不是那么流畅,本文介绍一种使用SQL Server对于JSON数据的支持实现少量数据的传递,一般适用于配置类数据。
实现:
一、整体流程
1、创建导入存储过程>>>2、开发库表生成JSON数据>>>3、JSON拷贝到目标库调用过程即可
二、存储过程
if (object_id('sp_sql_data_import_from_json', 'P') is not null)
drop proc sp_sql_data_import_from_json
go
create procedure sp_sql_data_import_from_json(
@tableName varchar(500)
,@data NVARCHAR(MAX)
)
as
DECLARE @sql NVARCHAR(MAX);
DECLARE @json_field NVARCHAR(MAX);
select @json_field = STUFF(
(
select COLUMN_NAME + ' ' + data_type +
case when data_type = 'varchar' then '(50)' else '' end + ' ''$.' + COLUMN_NAME + ''','
from INFORMATION_SCHEMA.COLUMNS where TABLE_NAME = @tableName
FOR XML PATH('')
), 1, 0, ''
);
set @json_field = LEFT(@json_field, len(@json_field) - 1)
SET @sql = N'
insert into [' + @tableName + ']
SELECT * FROM OPENJSON(@json)
WITH ('+@json_field+');
'
print @sql
exec sp_executesql @sql,N'@json NVARCHAR(max)', @data
go
exec sp_sql_data_import_from_json 'okr_period_config', '[]'
SQL Server Management Studio中的样子
三、开发库表生成JSON数据
一般的查询:
使用SQL Server自带的JSON格式
点击后查看详情
四、JSON拷贝到目标库调用过程即可
declare @json varchar(max);
-- 这里是上一步生成的数据
set @json=N'
[]
'
-- 两个参数:第一个是要导入的表明,第二个是数据
exec sp_sql_data_import_from_json 'sp_sql_data_import_from_json', @json
总结说明
通过以上几步即可实现少量数据的简单迁移,注意以上过程仅使用数据类型相对简单的场景,如果使用了比较复杂的数据类型,请根据实际需要调整存储过程即可,存储过程不再详细解释,相信猿友们可以搞定。
有错误或建议,欢迎微信+13316098767 email:13316098767@qq.com