mysql数据库表复制备份_mysql数据库的备份以及表格数据之间的复制
#####-------------mysql數(shù)據(jù)備份以及表間數(shù)據(jù)的復(fù)制-------------------#####
##----------------我的mysql學(xué)習(xí)(二)--------------------------###
##mysql數(shù)據(jù)的導(dǎo)入和導(dǎo)出--這里承接上一部分
#導(dǎo)出全部數(shù)據(jù)庫該操作在mysql命令行外進行:
導(dǎo)出數(shù)據(jù)格式如下:
mysqldump -hlocalhost -uroot -p databasename tablename > filename.sql
#由于數(shù)據(jù)庫在本機上所有可以省略-hlocalhost
#預(yù)輸入sql命令:
mysqldump -uroot -p --default-character-set=gbk mydb > E:\mydb.sql
#彈出輸入密碼提示,輸入密碼即可導(dǎo)出數(shù)據(jù)庫。.sql文件中不包含創(chuàng)建數(shù)據(jù)庫的語句
#有的僅僅是對表的操作。
C:\Users\trsli>mysqldump -uroot -p --default-character-set=gbk mydb > E:\myd
b.sql
Enter password: ****
#導(dǎo)出成功數(shù)據(jù)庫,我們將數(shù)據(jù)庫重新導(dǎo)入MySQL中,實現(xiàn)方法如下所示:
首先需要重新建立一個數(shù)據(jù)庫,或者用已經(jīng)存在的數(shù)據(jù)庫,這里新建一數(shù)據(jù)庫:
#create database mydb1 default character set gbk;
然后進行如下操作導(dǎo)入數(shù)據(jù)庫:
C:\Users\trsli>mysql -uroot -p mydb1 < E:\mydb.sql
Enter password: ****
或者在mydb1下直接用如下命令:
source E:\mydb.sql
#兩種方式效果一樣,現(xiàn)在檢查mydb1中是否存在該表已經(jīng)表中是否有數(shù)據(jù)。
mysql> use mydb1;
Database changed
mysql> show tables;
+-----------------+
| Tables_in_mydb1 |
+-----------------+
| mytable???????? |
+-----------------+
1 row in set (0.00 sec)
mysql> select * from mytables;
+----+--------+-------+
| id | name?? | count |
+----+--------+-------+
|? 1 | 張三?????? |? 1000 |
|? 2 | 李四?????? |?? 500 |
|? 3 | 王老虎????? |?? 100 |
|? 4 | 趙大????? |? 1000 |
|? 5 | 王二小????? |?? 500 |
|? 6 | 三亞子?????? |?? 100 |
+----+--------+-------+
6 rows in set (0.00 sec)
#該數(shù)據(jù)與數(shù)據(jù)庫mydb數(shù)據(jù)庫中顯示一致。
#在數(shù)據(jù)庫眾多的表中,如果我們只需要導(dǎo)出某一張表格,那么我們可以進行如下操作:
mysqldump -uroot -p mydb1 mytable > E:\mydb1.sql
C:\Users\trsli>mysqldump -uroot -p mydb1 mytable > E:\mydb1.sql
Enter password: ****
#在導(dǎo)出數(shù)據(jù)過程中有一些參數(shù)如:-d --add-drop-table,這里看一下有什么效果:
#這里只添加-d:
C:\Users\trsli>mysqldump -uroot -p -d mydb1 mytable > E:\mydb2.sql
Enter password: ****
#在導(dǎo)出的文件中會少了插入數(shù)據(jù)的sql語句,只有創(chuàng)建表的sql語句存在。
################------>.sql文件中德語句
LOCK TABLES `mytable` WRITE;
/*!40000 ALTER TABLE `mytable` DISABLE KEYS */;
INSERT INTO `mytable` VALUES (1,'張三',1000),(2,'李四',500),(3,'王老虎',100)
,(4,'趙大',1000),(5,'王二小',500),(6,'三亞子',100);
/*!40000 ALTER TABLE `mytable` ENABLE KEYS */;
UNLOCK TABLES;
################----->該區(qū)域sql語句將不會顯示
#下面添加--add-drop -table語句:
C:\Users\trsli>mysqldump -uroot -p --add-drop-table mydb1 mytable > E:\mydb3
.sql
Enter password: ****
#該結(jié)果與未添加差不多,也許個人觀察不夠仔細(xì)。
#最后同時添加:-d --add-drop-table查看效果
C:\Users\liyuanjie>mysqldump -uroot -p -d --add-drop-table mydb mytable > E:\myd
b3.sql
Enter password: ****
#該效果與只添加-d一致
####-----------------以上方式可用于數(shù)據(jù)庫備份----------------####
####-----------------以下是批量添加表數(shù)據(jù)的操作--------------####
#這些在網(wǎng)上都有現(xiàn)成的范例,但是我覺得只有自己親手做過才能算是真的明白所以有了以下的操作
#這里要做的就是關(guān)于表中數(shù)據(jù)的復(fù)制,上面我們介紹過通過.txt文本添加數(shù)據(jù),這里介紹表格間復(fù)制數(shù)據(jù):
#現(xiàn)在創(chuàng)建一個新的表:mytab
mysql> create table mytab(
-> id int primary key auto_increment,
-> name varchar(20) not null,
-> age int not null,
-> salary int not null
-> )type=InnoDB;
Query OK, 0 rows affected, 1 warning (0.07 sec)
#給該表添加4個字段
#這里用前面介紹的文件導(dǎo)入數(shù)據(jù)方式向空表mytab中添加數(shù)據(jù)
#load data local infile 'E:\mydb.txt' into table mytab(name,salary,age);
mysql> load data local infile 'E:\mydb.txt' into table mytab(name,salary,age);
Query OK, 3 rows affected (0.06 sec)
Records: 3? Deleted: 0? Skipped: 0? Warnings: 0
mysql> select * from mytab;
+----+--------+-----+--------+
| id | name?? | age | salary |
+----+--------+-----+--------+
|? 1 | ?阿瓊????? |? 23 |?? 1000 |
|? 2 | 秋水蝦???? |? 24 |??? 500 |
|? 3 | 害人精????? |? 22 |??? 100 |
+----+--------+-----+--------+
3 rows in set (0.01 sec)
#如何將mytab中的數(shù)據(jù)復(fù)制到mytable中,就是我們下面需要做的。mytable中數(shù)據(jù)如最上邊所示:
#insert into mytable (name,count) select name,salary from mytab ;
mysql> select * from mytable;
+----+--------+-------+
| id | name?? | count |
+----+--------+-------+
|? 1 | 張三?????? |? 1000 |
|? 2 | 李四?????? |?? 500 |
|? 3 | 王老虎????? |?? 100 |
|? 4 | 趙大????? |? 1000 |
|? 5 | 王二小????? |?? 500 |
|? 6 | 三亞子?????? |?? 100 |
|? 7 | ?阿瓊????? |? 1000 |
|? 8 | 秋水蝦???? |?? 500 |
|? 9 | 害人精????? |?? 100 |
+----+--------+-------+
9 rows in set (0.00 sec)
#可以看到數(shù)據(jù)以及增加了三行,即將全表導(dǎo)入
#進行不重復(fù)插入數(shù)據(jù)操作:
這里先刪除最后一條數(shù)據(jù):
#delete from mytable where id=9;
mysql> delete from mytable where id=9;
Query OK, 1 row affected (0.10 sec)
#按照預(yù)期應(yīng)該只會插入一條語句,看一下是不是如此呢,下面我們先寫一個sql的草稿:
#insert into mytable(name,count) select name,salary from mytab where not exists (select * from mytable where name=mytab.name);
#上面的語句就是將重名的剔除,添加非重名數(shù)據(jù)
mysql> insert into mytable(name,count) select name,salary from mytab where not e
xists (select * from mytable where name=mytab.name);
Query OK, 1 row affected (0.06 sec)?#影響一行數(shù)據(jù)
Records: 1? Duplicates: 0? Warnings: 0
#小注:在這里我用了較長時間才寫好該sql語句,沒辦法,略顯不專業(yè)哈。
#####----------------關(guān)于向表格中添加數(shù)據(jù)的操作暫時結(jié)束-----#### #以后還會將一些關(guān)于mysql配置文件my.conf相關(guān)的東西,由于對于數(shù)據(jù)庫整體把我不是太好,切勿見怪。
總結(jié)
以上是生活随笔為你收集整理的mysql数据库表复制备份_mysql数据库的备份以及表格数据之间的复制的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 得到APP如何获得赞赏
- 下一篇: mysql数据库全备_MySQL inn