随着功能的迭代或者数据表中数据量的增加,将现有数据进行迁移已是工作中经常遇到的事情。通常我们在平时迁移数据数据的时候,只需要用mysqldump、mysqlimport指令就能完成迁移功能,但在实际工作中,作为开发者的我们往往没有这么大的权限(例如写权限)来操作线上数据,只能想办法根据已有的权限(通常是从库的读权限)生成插入数据的SQL文件,再将文件交给DBA进行执行,从而完成迁移工作。
mysqldump -h127.0.0.1 -uadmin -proot database table > /home/work/data.sql;
mysqldump -h127.0.0.1 -uadmin -proot database table --skip-lock-tables > /home/work/data.sql
mysqldump -h127.0.0.1 -uadmin -proot database table --where="id<100" --skip-lock-tables > /home/work/data.sql
mysql -h127.0.0.1 -uadmin -proot database -e "SELECT id, name FROM table INTO OUTFILE ‘/home/work/data.sql‘"
mysql -h127.0.0.1 -uadmin -proot -Ne "USE table; SELECT id, name FROM table;" > /home/work/data.txt
load data infile ‘/home/work/data.txt‘ into table table_name
load data local infile ‘/home/work/data.txt‘ into table table_name
mysqldump -h127.0.0.1 -uroot -proot database table > /home/work/data.sql
mysqldump -h127.0.0.1 -uroot -proot --no-create-info --default-character-set=utf8 database table > /home/work/data.sql
Tips:在创建数据库的时候,如果不指定字符集,则默认是latin1,此时用mysqldump进行导出时,需要指定字符集为latin1才不会乱码,可以使用命令:show variables like ‘character_set_%‘; 来查看数据库的编码方式(关注 character_set_database 的值)
原文:https://www.cnblogs.com/triple-s/p/11312729.html