要將兩表合并,必須要有相同的字段和字段數(shù)據(jù),ID主鍵自動(dòng)增加無(wú)疑是最好的選擇。 所以,在兩個(gè)表中,都應(yīng)該有id主鍵自動(dòng)增加的字段。 然后就是下面的sql語(yǔ)句執(zhí)行了:
創(chuàng)新互聯(lián)建站專注于中大型企業(yè)的成都網(wǎng)站制作、成都做網(wǎng)站和網(wǎng)站改版、網(wǎng)站營(yíng)銷服務(wù),追求商業(yè)策劃與數(shù)據(jù)分析、創(chuàng)意藝術(shù)與技術(shù)開(kāi)發(fā)的融合,累計(jì)客戶上1000家,服務(wù)滿意度達(dá)97%。幫助廣大客戶順利對(duì)接上互聯(lián)網(wǎng)浪潮,準(zhǔn)確優(yōu)選出符合自己需要的互聯(lián)網(wǎng)運(yùn)用,我們將一直專注品牌網(wǎng)站設(shè)計(jì)和互聯(lián)網(wǎng)程序開(kāi)發(fā),在前進(jìn)的路上,與客戶一起成長(zhǎng)!
假設(shè)sdeg和zbug的表結(jié)構(gòu) 都是
ID varchar(4) primary key,
Name varchar(8),
Dept varchar(10),
存儲(chǔ)過(guò)程如下
CREATE PROCEDURE table_combine()
BEGIN
#第一步把sdeg和zbug兩個(gè)表進(jìn)行聯(lián)合輸出到臨時(shí)表tmp_tab中
create temporary table tmp_tab select * from sdeg union select * from zbut;
#第二步創(chuàng)建結(jié)果表sdut,并創(chuàng)建主鍵
create table sdut(ID varchar(4) primary key, Name varchar(8),Dept varchar(10));
#第三步把臨時(shí)表里面的重復(fù)數(shù)據(jù)過(guò)濾并寫入sdut
INSERT INTO sdut(ID,Name,Dept) SELECT distinct ID,Name,Dept FROM tmp_tab;
#drop臨時(shí)表
drop table tmp_tab;
END
以MySQL數(shù)據(jù)庫(kù)為例,通過(guò)SQL命令行將某個(gè)表的所有數(shù)據(jù)或指定字段的數(shù)據(jù),導(dǎo)入到目標(biāo)表中。此方法對(duì)于SQLServer數(shù)據(jù)庫(kù),也就是T-SQL來(lái)說(shuō),同樣適用 。
類別一、 如果兩張張表(導(dǎo)出表和目標(biāo)表)的字段一致,并且希望插入全部數(shù)據(jù),可以用這種方法:(此方法只適合導(dǎo)出兩表在同一database)
INSERT INTO 目標(biāo)表 SELECT * FROM 來(lái)源表;
例如,要將 articles 表插入到 newArticles 表中,則可以通過(guò)如下SQL語(yǔ)句實(shí)現(xiàn):
INSERT INTO newArticles SELECT * FROM articles;
類別二、 如果只希望導(dǎo)入指定字段,可以用這種方法:
INSERT INTO 目標(biāo)表 (字段1, 字段2, ...) SELECT 字段1, 字段2, ... FROM 來(lái)源表;
請(qǐng)注意以上兩表的字段必須一致(字段類型),否則會(huì)出現(xiàn)數(shù)據(jù)轉(zhuǎn)換錯(cuò)誤。
1、跨服務(wù)器復(fù)制表中數(shù)據(jù)
insert into openrowset('sqloledb','localhost';'sa';'123',Test.dbo.Table_B)
select * from Test.dbo.Table_A
//啟用Ad Hoc Distributed Queries:
exec sp_configure 'show advanced options',1
reconfigure
exec sp_configure 'Ad Hoc Distributed Queries',1
reconfigure
//使用完成后,關(guān)閉Ad Hoc Distributed Queries:
exec sp_configure 'Ad Hoc Distributed Queries',0
reconfigure
exec sp_configure 'show advanced options',0
reconfigure
2、//不跨服務(wù)器
insert into dbo.Table_B) select * from dbo.Table_A
將表名和數(shù)據(jù)庫(kù)連接字符串用代碼拼接好 然后執(zhí)行上述您需要的sql語(yǔ)句 程序功能即可完成
將一個(gè)mysql數(shù)據(jù)庫(kù)中的一個(gè)表導(dǎo)入到另一個(gè)mysql數(shù)據(jù)庫(kù)中
db1為原數(shù)據(jù)庫(kù),db2為要導(dǎo)出到的數(shù)據(jù)庫(kù),fromtable 是要導(dǎo)出的表名
1.方法一:
登錄導(dǎo)出到的數(shù)據(jù)庫(kù),執(zhí)行
create table fromtable select * from db1.fromtable;
2.方法二:
在cmd下執(zhí)行,mysqldump -u root -p db1 fromtable file=d:/fromtable.sql; 輸入秘密,root為用戶名
登錄db2 執(zhí)行 source d:/fromtable.sql;
3.方法三:
登錄db1 執(zhí)行 select * from fromtable into outfile "d:/fromtable .txt"; 導(dǎo)出純數(shù)據(jù)格式
登錄db2 執(zhí)行 load data infile d:/fromtable .txt into table fromtable; 需要先建一張和原表結(jié)構(gòu)一樣的空表。
4.建一個(gè)odbc連接,先導(dǎo)出到access中,再導(dǎo)出到另一個(gè)庫(kù)中。
實(shí)現(xiàn)字段合并
首先建立關(guān)系(例如兩個(gè)表中的id相同的1對(duì)1關(guān)系),然后建立一個(gè)生成表查詢,之后把所有字段加入查詢中,執(zhí)行該查詢,即可生成合并后的新表。
實(shí)現(xiàn)記錄合并
兩表結(jié)構(gòu)要相同(至少有一個(gè)字段相同,如果一個(gè)都不同有什么意義呢),然后用追加查詢,選好追加到的表,和追加字段,執(zhí)行查詢即可cbcs147希望help
you。reference51cto,365testing
您好.
mysql中,2個(gè)不同數(shù)據(jù),同一結(jié)構(gòu)的表,如何合并數(shù)據(jù)。
1、合并的規(guī)則是什么,用主鍵?主鍵重復(fù)如何處理;
2、你備份的是什么格式的文件,SQL語(yǔ)句?導(dǎo)入到MYSQL中再做處理;
3、詳細(xì)說(shuō)明,貼出相關(guān)文本內(nèi)容。
關(guān)鍵看表中是否有沖突,比如主鍵是否重復(fù),是否有自增長(zhǎng)字段
如果沒(méi)有的話,就簡(jiǎn)單恢復(fù)數(shù)據(jù),或者恢復(fù)在兩張表里,再insert即可
1、忽略表之間的關(guān)聯(lián)關(guān)系
ALTER TABLE db2.dbo.table NOCHECK CONSTRAINT 關(guān)系名
2、--將沒(méi)有重復(fù)的數(shù)據(jù)合并
insert into db2.dbo.table(field1,field2...) select field1,field2... from db1.dbo.table a where a.username not in (select username from db2.dbo.table)
3、將重復(fù)的數(shù)據(jù)寫入臨時(shí)表
select field1,field2... into 新的臨時(shí)表 from db1.dbo.table a where a.username in (select username from db2.dbo.table)