mysql 数据库迁移表格_MySQL数据库的库表迁移

本文详细介绍了如何进行MySQL数据库的库表迁移,包括全量迁移和部分字段迁移。全量迁移使用mysqldump命令,部分字段迁移则涉及数据读取、本地存储及导入。在部分字段迁移中,需注意MySQL的secure-file-priv选项对文件导出的限制,并正确设置数据导入路径。
摘要由CSDN通过智能技术生成

最近在研究MySQL数据库的库表迁移问题,主要分为两种情况,一种情况是迁移数据库的表的全部字段,另一种是迁移数据库的表的部分字段。前一种情况是直接使用mysqldump命令来实现,后一种情况则是采用数据写入本地再导入MySQL的思路。显然前一种情况也可以采用后一种情况的思路实现,但使用mysqldump命令的效率明显要高。

一、MySQL迁移数据库库表的全部字段

需求:A库的a表迁移到B库,A库和B库已经存在。

思路:使用mysqldump命令将A库的信息写入sql脚本,然后向B库中执行该脚本。

使用mysqldump命令只需两个步骤就能完成库表的迁移。

(1) 将A库的建表和插入数据的操作写入sql脚本。

mysqldump -uroot -p A > A_dump.sql

可以查看一下导出的sql脚本内容:

ae5d31c08ec93cb7beb8cdb674cdc375.png

(2) 将导出的sql脚本应用到B库。

mysql -uroot -p B < A_dump.sql

查看B库中的数据,发现数据已迁移过来。

二、MySQL跨机器迁移数据库库表的部分字段

需求:将A库所在机器的a表的部分字段数据迁移到B库所在机器的b表,比如表a(id,name,age,address),表b(id,name,age)。

思路:从A库的a表中读出B库b表所需字段的数据,写入到本地文件,然后导入到B库b表。

(1) 库A,表a,所在机器10.20.14.47

a表中内容

c4a3852e6ced03d952db1f17030be6bc.png

将库A中表a的字段数据导出,加载到本地文件中,执行如下命令发现会报错。

SELECT id,name,age from a INTO OUTFILE '/home/kwang/field.csv' FIELDS TERMINATED BY ',';

报错信息:

ERROR 1290 (HY000): The MySQL server is running with the --secure-file-priv option so it cannot execute this statement

报错的原因时由于MySQL服务具有文件保护机制,不予许用户导出文件到任意目录。

查阅相关资料后,发现MySQL有一个安全文件夹,且允许用户导出数据到该文件夹中,通过“select @@GLOBAL.secure_file_priv;”命令可以查看该文件夹的路径。

7bcc66fecaee1aeb1f489295f629a254.png

于是,通过以下命令可以导出数据到本地文件:

SELECT id,name,age from a INTO OUTFILE '/var/lib/mysql-files/field.csv' FIELDS TERMINATED BY ',';

查看导出文件field.csv的内容,即库A中a表的部分字段数据。

89d6c83ecf1e668c704ceaa1454ed2c2.png

(2) 库B,表b,所在机器10.20.14.43

将A库所在机器导出的文件拷贝到本地

scp root@10.20.14.47:/var/lib/mysql-files/field.csv /root

进入mysql,将csv文件里的数据加载到库B的表b中。

load data local infile '/home/kwang/field.csv' into table b fields terminated by ',';

查看库B的b表,所需字段数据已成功迁移过来。

c835ac38e082985160fb728dec80191a.png

【参考链接】

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值