MySQL迁移数据


mysqldump使用场景

1、导出多张表 mysqldump -uroot -pdbpasswd dbname test1 test2 test3 --single-transaction >db.sql; 2、导出where条件的数据,并加gzip压缩 mysqldump -uname -ppwd dbname tbname --single-transaction --where="id>10" | gzip > backupfile.sql.gz 相应的导入: gunzip解压: gunzip < backupfile.sql.gz | mysql -uusername -ppassword databasename 3、mysqldump导出全部数据 mysqldump -uroot -p --master-data=2 --single-transaction -R -E --triggers -A -q > all.sql 其中--master-data=2代表备份时刻记录master的Binlog位置和Position,--single-transaction意思是获取一致性快照,-R意思是备份存储过程和函数,--triggres的意思是备份触发器,-A代表备份所有的库。更多信息请自行mysqldump --help查看。

导出文本为csv格式

mysql -udba -pXZ5rjoVvWrPp --socket=/data/mysql_3309/mysql.sock -e "SELECT id_card,adjust_amount,get_package_time from houbank_applet.t_applet_package_user INTO OUTFILE \"/var/lib/mysql-files/test.csv\" FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '\"' LINES TERMINATED BY '\n';" select into outfile用法 SELECT ... FROM TABLE_A INTO OUTFILE "/path/to/file" FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' LINES TERMINATED BY '\n'; load data infile用法 LOAD DATA INFILE "/path/to/file" INTO TABLE table_name; 注意:如果导出时用到了FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' LINES TERMINATED BY '\n'语句,那么LODA时也要加上同样的分隔限制语句。还要注意编码问题。

导出文本为txt格式

mysql -udba -pXZ5rjoVvWrPp --socket=/data/mysql_3309/mysql.sock -e "SELECT id_card,adjust_amount,get_package_time from houbank_applet.t_applet_package_user;" > /root/scripts/output/user01.txt