sql如何将两个表里的数据同步?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sql如何将两个表里的数据同步?相关的知识,希望对你有一定的参考价值。

参考技术A

使用 merge into。

使用 merge into,Merge是在SQL Server  2008被引入,它能将Insert,Update,Delete简单的并为一句。根据与源表联接的结果,对目标表执行插入、更新或删除操作。

例如,根据在另一个表中找到的差异在一个表中插入、更新或删除行,可以对两个表进行同步。通过这个描述,我们 可以看出Merge是关于对于两个表之间的数据进行操作的。 

可以直接 select * from 表,然后一个列一个列记录下),通过以上方法直接复制所有字段名,方便以下运用。

得出相关表的所有列名后,下面就是运用到merge into 里面去了。快速运用表字段进行粘贴到merge 里面的方法是:将所有字段复制粘贴到excel里面,然后用EXCEL & 符号合并增加字符号,如图:

运行以上代码成功后,F_Test 库里面的biitm01t 表就跟正式库里面 的biitm01t 表的数据一样了。

如何通过SQL按内容拆分字段(将一个字段值拆分两个字段)

通过SQL按内容分拆成多字段

需求描述

将表里的一个字段,该字段的某行开始是key,随后对应的是其value,将key和value分别拆分对应的两个字段。如下图示例:

 问题分析

该问题不适合用SQL来处理,因为SQL主要处理表格形式的结构化数据,用程序语言如Java、Python等更方便些。

解决方法

-- # SQL不擅长处理这种数据,用程序语言更方便些。
-- Step1 创建表并初始化数据
CREATE TABLE tb_data(
data varchar(20)
)
INSERT INTO tb_data
SELECT 'a.wav' data UNION 
SELECT 1 data UNION 
SELECT 2 data UNION 
SELECT 'b.wav' data UNION 
SELECT 3 data UNION 
SELECT 4 data UNION 
SELECT 'c.wav' data UNION 
SELECT 5 data UNION
SELECT 6 data  UNION
SELECT 7 data 

-- SELECT * FROM tb_data
-- Step2 创建临时表tmp_data,主要存记录序号、分割开始位置、记录数。
-- DROP TABLE tmp_data;
create TEMPORARY table tmp_data(
id int,
data varchar(20),
pos smallint,
cnt int
)

-- Step3 插入临时表。
INSERT INTO tmp_data
SELECT (@i:=@i+1)id,tb_data.*,INSTR(data,'.') dot,cnt
FROM tb_data,(select @i:=0)t ,(SELECT COUNT(1) cnt FROM tb_data) t2 

SELECT * FROM tmp_data

-- Step4 拆分字段 
SELECT B.data,A.data seq
-- * 
FROM tmp_data A
JOIN 
(
		SELECT * ,
		CASE WHEN LEAD(id)OVER(order by id) IS NULL THEN 999999 ELSE LEAD(id)OVER(order by id) END as next
		FROM tmp_data
		WHERE pos>0
) B
ON A.id > B.id AND A.id < B.next

-- Step 4 查看结果
/*
data	seq
a.wav	1
a.wav	2
b.wav	3
b.wav	4
c.wav	5
c.wav	6
c.wav	7
*/

 

 

以上是关于sql如何将两个表里的数据同步?的主要内容,如果未能解决你的问题,请参考以下文章

如何将RDS的数据同步到本地自建数据库

sql server2008,同一数据库里的两张不同的表怎么实现同步?

使用Red Gate Sql Compare 数据库同步工具进行SQL Server的两个数据库的结构比较同步

如何实现两个SQL数据库的同步操作

mysql将一个表的数据同步到另一个表

如何通过 WCF(n 层)同步两个 Sql Compact 版本数据库