使用JSON实现SQL Server少量数据传递(导入导出)

摘要:

在开发业务系统时,对于使用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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值