mysql怎么復(fù)制列數(shù)據(jù),mysql數(shù)據(jù)庫怎么復(fù)制表

mysql如何復(fù)制數(shù)據(jù)到同一張表?

在利用數(shù)據(jù)庫開發(fā)時,常常會將一些表之間的數(shù)據(jù)互相導(dǎo)入。當(dāng)然可以編寫程序?qū)崿F(xiàn),但是,程序常常需要開發(fā)環(huán)境,不方便。最方便是利用sql語言直接導(dǎo)入。既方便而修改也簡單。以下就是導(dǎo)入的方法。

創(chuàng)新互聯(lián)于2013年開始,是專業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項(xiàng)目做網(wǎng)站、成都網(wǎng)站制作網(wǎng)站策劃,項(xiàng)目實(shí)施與項(xiàng)目整合能力。我們以讓每一個夢想脫穎而出為使命,1280元烏魯木齊做網(wǎng)站,已為上家服務(wù),為烏魯木齊各地企業(yè)和個人服務(wù),聯(lián)系電話:18980820575

1、 表結(jié)構(gòu)相同的表,且在同一數(shù)據(jù)庫(如,table1,table2)

Sql :

復(fù)制代碼代碼如下:

insert into table1 select * from table2 (完全復(fù)制)

insert into table1 select distinct * from table2(不復(fù)制重復(fù)紀(jì)錄)

insert into table1 select top 5 * from table2 (前五條紀(jì)錄)

2、不在同一數(shù)據(jù)庫中(如,db1 table1,db2 table2)

sql:

[code]

insert into db1.table1 select * from db2.table2 (完全復(fù)制)

insert into db1.table1 select distinct * from db2table2(不復(fù)制重復(fù)紀(jì)錄)

insert into tdb1.able1 select top 5 * from db2table2 (前五條紀(jì)錄)

3、表結(jié)構(gòu)不同的表或復(fù)制部分紀(jì)錄(如,dn_user,dn_user2)

a. 建一個新表[DN_UserTemp](在老表dn_user上增加一列)

復(fù)制代碼代碼如下:

CREATE TABLE [DN_UserTemp] ( [Num] [numeric](18, 0) IDENTITY (1, 1) NOT NULL)

[Id] [idtype] NOT NULL ,

[Name] [fntype] NOT NULL ,

[Descript] [dstype] NULL ,

[LogonNm] [idtype] NOT NULL ,

[Password] [idtype] NULL ,

[Gender] [char] (1) NULL ,

[Quited] [booltype] NOT NULL,

[OffDuty] [booltype] NOT NULL ,

[Stopped] [booltype] NOT NULL,

[OSBind] [booltype] NOT NULL,

[Domain] [idtype] NULL ,

[EMail] [fntype] NULL ,

[UnitId] [idtype] NULL ,

[BranchId] [idtype] NULL ,

[DutyId] [idtype] NULL ,

[LevelId] [idtype] NULL ,

[ClassId] [idtype] NULL ,

[TypeId] [idtype] NULL ,

[IP] [varchar] (15) COLLATE Chinese_PRC_CI_AS NULL ,

[ExpireDT] [datetime] NULL ,

[Sort] [int] NOT NULL ,

[AllowDel] [booltype] NOT NULL,

[UnitChief] [booltype] NOT NULL,

[BranchChief] [booltype] NOT NULL ,

[UnitDeputy] [booltype] NOT NULL ,

[BranchDeputy] [booltype] NOT NULL ,

[Num] [numeric](18, 0) IDENTITY (1, 1) NOT NULL

) ON [PRIMARY]

b. 將dn_uer2的數(shù)據(jù)拷入dn_usertemp

sql:insert into dn_usertemp select * from dn_user2

c.將dn_usertemp 拷入dn_user

sql:

復(fù)制代碼代碼如下:

declare @i int

declare @j int

declare @Name fntype

set @i=1

select @j=count(*) from dn_usertemp

while @i@j 1

begin

select @Name=Name from dn_usertemp where Num=@i

print @Name

insert into dn_user (Name) values (@Name) where Num=@i

select @i=@i 1

end

MySql數(shù)據(jù)庫復(fù)制表數(shù)據(jù)

將 production 數(shù)據(jù)庫中的 mytbl 表快速復(fù)制為 mytbl_new,2個命令如下:

復(fù)制代碼代碼如下:

CREATE TABLE mytbl_new LIKE production.mytbl;

INSERT mytbl_new SELECT * FROM production.mytbl;

第一個命令是創(chuàng)建新的數(shù)據(jù)表 mytbl_new ,并復(fù)制 mytbl 的數(shù)據(jù)表結(jié)構(gòu)。

第二個命令是講數(shù)據(jù)表 mytbl 中的數(shù)據(jù)復(fù)制到新表 mytbl_new 。

注:production.mytbl是指定要復(fù)制表的數(shù)據(jù)庫名稱為 production 。它是可選的。

假如沒有production. ,MySQL數(shù)據(jù)庫將會假設(shè)mytbl在當(dāng)前操作的數(shù)據(jù)庫。

另外:在mysql數(shù)據(jù)庫中復(fù)制數(shù)據(jù)為:

復(fù)制代碼代碼如下:

select * into desTable from sourceTable在mssql中支持,在mysql中不支持

insert into desTable select * from sourceTable

如何將mysql的一個完整數(shù)據(jù)庫全部復(fù)制到另外一個數(shù)據(jù)庫?

如果從庫上表 t 數(shù)據(jù)與主庫不一致,導(dǎo)致復(fù)制錯誤,整個庫的數(shù)據(jù)量很大,重做從庫很慢,如何單獨(dú)恢復(fù)這張表的數(shù)據(jù)?通常認(rèn)為是不能修復(fù)單表數(shù)據(jù)的,因?yàn)樯婕暗礁鞅頎顟B(tài)不一致的問題。下面就列舉備份單表恢復(fù)到從庫會面臨的問題以及解決辦法:

場景 1

如果復(fù)制報錯后,沒有使用跳過錯誤、復(fù)制過濾等方法修復(fù)主從復(fù)制。主庫數(shù)據(jù)一直在更新,從庫數(shù)據(jù)停滯在報錯狀態(tài)(假設(shè) GTID 為 aaaa:1-100)。

修復(fù)步驟:

在主庫上備份表 t (假設(shè)備份快照 GTID 為 aaaa:1-10000);

恢復(fù)到從庫;

啟動復(fù)制。

這里的問題是復(fù)制起始位點(diǎn)是 aaaa:101,從庫上表 t 的數(shù)據(jù)狀態(tài)是領(lǐng)先其他表的。aaaa:101-10000 這些事務(wù)中只要有修改表 t 數(shù)據(jù)的事務(wù),就會導(dǎo)致復(fù)制報錯 ,比如主鍵沖突、記錄不存在(而 aaaa:101 這個之前復(fù)制報錯的事務(wù)必定是修改表 t 的事務(wù))

解決辦法:啟動復(fù)制時跳過 aaaa:101-10000 這些事務(wù)中修改表 t 的事務(wù)。

正確的修復(fù)步驟:

1. 在主庫上備份表 t (假設(shè)備份快照 GTID 為 aaaa:1-10000),恢復(fù)到從庫;

2. 設(shè)置復(fù)制過濾,過濾表 t:

CHANGE REPLICATION FILTER REPLICATE_WILD_IGNORE_TABLE = ('db_name.t');

3. 啟動復(fù)制,回放到 aaaa:10000 時停止復(fù)制(此時從庫上所有表的數(shù)據(jù)都在同一狀態(tài),是一致的);

START SLAVE UNTIL SQL_AFTER_GTIDS = 'aaaa:10000';

4. 刪除復(fù)制過濾,正常啟動復(fù)制。

注意事項(xiàng):這里要用 mysqldump --single-transaction --master-data=2,記錄備份快照對應(yīng)的 GTID

場景 2

如果復(fù)制報錯后,使用跳過錯誤、復(fù)制過濾等辦法修復(fù)了主從復(fù)制。主、從庫數(shù)據(jù)一直在更新。

修復(fù)步驟:

在主庫上備份表 t (假設(shè)備份快照 GTID為 aaaa:1-10000);

停止從庫復(fù)制,GTID為 aaaa:1-20000;

恢復(fù)表 t 到從庫;

啟動復(fù)制。

這里的問題是復(fù)制起始位點(diǎn)是 aaaa:20001,aaaa:10000-20000 這些事務(wù)將不會在從庫上回放,如果這里面有修改表 t 數(shù)據(jù)的事務(wù),從庫上將丟失這部分?jǐn)?shù)據(jù)。

解決辦法:從備份開始到啟動復(fù)制,鎖定表 t,保證 aaaa:10000-20000 中沒有修改表 t 的事務(wù)。

正確修復(fù)步驟:

對表 t 加讀鎖;

在主庫上備份表 t;

停止從庫復(fù)制,恢復(fù)表 t;

啟動復(fù)制;

解鎖表 t。

如果是大表,這里可以用可傳輸表空間方式備份、恢復(fù)表,減少鎖表時間。

如何復(fù)制mysql數(shù)據(jù)庫中的記錄

在Mysql程序中有我自己的一個數(shù)據(jù)庫共5張表,里邊數(shù)據(jù)不算太多。我現(xiàn)在想把他們?nèi)颗搅硪慌_電腦中去,該怎么弄,如果不用其它的軟件工具,只用Mysql自已的程序不知可否??

注:不用考慮操作系統(tǒng)。?

---------------------------------------------------------------?

在dos命令提示符下使用mysqldump命令進(jìn)行備份.?

如下:?

C:\Documents and Settings\Administratormysqldump yinshi c:\\backup.txt -uroot?

-p12142022?

說明:yinshi是我的數(shù)據(jù)庫名,里面有5張表; c:\\backup.txt 是我備份出來文件名和路徑;?

-u,-p參數(shù)后面跟的分別是用戶名和密碼.?

將你備份出來的文件我這里是backup.txt拷貝到另一臺機(jī)上,再在dos命令提示符下用mysql命令,進(jìn)行恢復(fù),如下:?

C:\Documents and Settings\Administratormysql c:\\backup.txt -uroot -p12142022?

or?

mysqlsource backup.txt;(這里backup.txt在放在data目錄下)?

---------------------------------------------------------------?

如果另一臺機(jī)器上也安裝了mysql,可以直接導(dǎo)入?

C:\mysql\binmysqldump -h172.20.6.250 -udeveloper -p123456 --opt server_databasename | mysql -hlocalhost -uroot -C obj_databasename?

172.20.6.250源服務(wù)器ip?

developer源服務(wù)器連接用戶名?

---------------------------------------------------------------?

有兩種辦法。?

1、在B機(jī)器上裝mysql。?

將A機(jī)器上的mysql/data下的你的數(shù)據(jù)庫目錄整個拷貝下來。?

將B機(jī)器上的mysql服務(wù)停止。?

找到B機(jī)器上的mysql/data目錄,將你拷貝的目錄粘貼進(jìn)去,然后啟動mysql服務(wù)就可以了。?

2、使用SQL語句備份和恢復(fù)?

你可以使用SELECT INTO OUTFILE語句備份數(shù)據(jù),并用LOAD DATA INFILE語句恢復(fù)數(shù)據(jù)。這種方法只能導(dǎo)出數(shù)據(jù)的內(nèi)容,不包括表的結(jié)構(gòu),如果表的結(jié)構(gòu)文件損壞,你必須要先恢復(fù)原來的表的結(jié)構(gòu)。?

語法:?

SELECT * INTO {OUTFILE | DUMPFILE} ’file_name’ FROM tbl_name?

LOAD DATA [LOW_PRIORITY] [LOCAL] INFILE ’file_name.txt’ [REPLACE | IGNORE]?

INTO TABLE tbl_name?

SELECT ... INTO OUTFILE ’file_name’

mysql數(shù)據(jù)庫如何將相同數(shù)據(jù)庫中的一個表的數(shù)據(jù)復(fù)制到另一個表中?

你建表復(fù)制就可以了,例如CREATE TABLE aa AS SELECT * FROM tree;這是完全復(fù)制tree表的數(shù)據(jù)及表結(jié)構(gòu)到aa表中。假如要復(fù)制某些字段的話,如:insert into 表名user(表中字段sal) select sal from emp;插入某一列sal到user表中,從emp表中獲取sal的數(shù)據(jù)信息。最后提醒下,Oracle和MySql復(fù)制表建表 一樣,可以自己建表結(jié)構(gòu),再復(fù)制數(shù)據(jù);也可以復(fù)制部分列和部分?jǐn)?shù)據(jù),分開操作。 但要保證數(shù)據(jù)類型一致,插入指定列數(shù),列數(shù)要相同,列的長度空間大就可以了。

網(wǎng)頁題目:mysql怎么復(fù)制列數(shù)據(jù),mysql數(shù)據(jù)庫怎么復(fù)制表
瀏覽地址:http://muchs.cn/article22/hcpijc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供小程序開發(fā)、定制網(wǎng)站移動網(wǎng)站建設(shè)、App設(shè)計、網(wǎng)站維護(hù)、定制開發(fā)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都定制網(wǎng)站網(wǎng)頁設(shè)計