使用java备份和恢复SQLServer表数据

文章讲述了如何利用SQL语句和批处理脚本自动从内网数据库导出表数据到外网,针对多表同步和跨数据库操作提供解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

需求

近来工作中遇到一个问题,内网办公系统中的数据需要导出到外网中进行查询,外网的数据库中还有一些表存储外网的数据,因此无法使用全库备份恢复功能来满足需求。即只从内网数据库中导出若干表的内容至外网数据库的对应表。

其他解决方案:使用SQL Server自身的导出SQL语句的方法其实也可以,但是涉及到几十个表,一一手工导出工作量较大。

因此自己写了个函数,将内网中的表数据导出,根据数据生成insert into 语句,然后使用批处理的方式导入到外网数据库中。

1.表结构的分析

生成insert语句时,不得不面对的是引号的使用,对于int等类型无需引号,但是对于char、text等必须加上引号,一个表动辄几十个字段,人工用数组等方式记录字段的类型、名称再进行处理,也比较耗费精力,尤其是数据表的结构时常还在变化,而且是另一个开发公司在维护,何时变化也不得而知。这里通过分析建表语句完成了自动的字段类型的对应,从而大大减轻了人工维护字段及其类型的工作量。

譬如建表语句如下(在SQL Server企业管理器中选中表,Ctrl+C即可得到),这里存放一个文件中:

CREATE TABLE [Import_BizDescrs] (
	[DescrId] [char] (10) COLLATE Chinese_PRC_CI_AS NULL ,
	[DescrType] [char] (20) COLLATE Chinese_PRC_CI_AS NULL ,
	[DescrAt] [datetime] NULL ,
	[Descr] [text] COLLATE Chinese_PRC_CI_AS NULL ,
	[DescrBy] [char] (20) COLLATE Chinese_PRC_CI_AS NULL ,
	[BizId] [char] (10) COLLATE Chinese_PRC_CI_AS NULL ,
	[SampId] [char] (20) COLLATE Chinese_PRC_CI_AS NULL ,
	[AssistTaskId] [char] (20) COLLATE Chinese_PRC_CI_AS NULL ,
	[CreatePerson] [char] (20) COLLATE Chinese_PRC_CI_AS NULL ,
	[CreateDate] [datetime] NULL ,
	[UpdatePerson] [char] (20) COLLATE Chinese_PRC_CI_AS NULL ,
	[UpdateDate] [datetime] NULL 
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
GO

从以上文字中,做出如下处理,即可获得表名、字段名、字段类型以及附带的是否需要引号。


                
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值