开发需求:每个表dump出部分数据

mysqldump 每张数据表统一导出的N个记录数

需求:

在开发过程中,需要将生产的数据导出到本地开发环境,希望可以每个表都导出部分数据.由于生产数据表都是上千万或亿级别,直接从服务器导出数据会影响业务, 希望可以导出部分数据用于测试环境使用。

实现:

利用mysqldump参数来实现

  • --where='where_condition', -w 'where_condition'

Dump only rows selected by the given WHERE condition. Quotes around the condition are mandatory if it contains spaces or other characters that are special to your command interpreter.

  • --where/-w 参数,它用来设定数据导出的条件,

mysqldump -u用户名 -p密码 库名 表名 --where="筛选条件" > 导出文件路径

  • 详细如下:
mysqldump -uroot -p -B employees --set-gtid-purged=OFF --where="true limit 100" > /software/every100.sql
或者
mysqldump -uroot -p -B employees --set-gtid-purged=OFF --where="1=1 limit 100 " > /software/every100.sql --employees库,每个表导出100条数据

mysql -uroot -p'xxxxxxxx' -h192.168.xxx.xxx -e "show databases"|grep -Ev "Database|sys|information_schema|mysql|performance_schema|test"|xargs mysqldump -uroot -p'xxxxxxxx' -h192.168.xxx.xxx  --add-drop-table --flush-logs --single-transaction --master-data=2  -R --databases --where="1=1 limit 100" > each_100_`date +"%Y%m%d"`.sql
  • --where="true limit N"

这个参数指为每个表增加一个LIMIT N 语句,导出时使用的是WHERE 拼接上 true limit, 拼接成where true limit N的语句并每个表统一导出的N个记录数.

原文地址:https://www.cnblogs.com/gczheng/p/9828702.html