mysql 导出数据库表部分数据
我们的项目是连接的远程服务器上的MySql。一般我都是用的Navicat来连接的,最近我想把远程数据库倒出来,导到本地。这样连接就方便了。但是300多表的数据量实在太大了,根本等不起。我...展开
推荐于2017-11-26
哈尼。用过mysqldump的工具吗?里面zhidao有一个参数叫where。具体用法我举个例子。
mysqldump -uroot -p db_name tab_name --where="1=1 limit 200"就可以了。版对了你要是想针对权某个字段排序的话也可以把order by子句加在参数里。
把这个语句加到shell脚本或者python脚本里。写一个循环就可以了。
mysqldump -uroot -p db_name tab_name --where="1=1 limit 200"就可以了。版对了你要是想针对权某个字段排序的话也可以把order by子句加在参数里。
把这个语句加到shell脚本或者python脚本里。写一个循环就可以了。
更多追问追答
追问
假设我想取服务器数据库里面的300多张表,每张表都取前200条数据。这个循环该怎么写?
就假设写在shell脚本里。写好之后怎么执行?
还有 mysqldump这个命令 导入完的脚本存在哪个路径?
多谢 帮我写个脚本,并告诉我怎么执行 感激不尽
追答
好吧。无聊的周五反正我也没啥事儿了。。
我先贴脚本。shell的。我用的比较烂。。
#!/bin/bash
#Creator: Pottievil
#config
user=your_username
passwd="your_passwd"
db=your_dbname
#do
#把你想导出的库的300多张表的表名写到一个临时文件里
mysql -u$user -p$passwd $db -e "show tables\G" |grep -i ":" | cut -d ‘:‘ -f 2 > tmp.txt
#从临时文件里逐行读出表名,然后拼到mysqldump的语句里
#mysqldump的语句里写了只导出200行,数字可以改。导出的表的命名规则为表名.sql
for table in `cat tmp.txt`
do
echo $table
mysqldump -u$user -p$passwd $db $table --where="1=1 limit 200" > $table.sql
done
这个使用嘛。就直接sh执行shell脚本就可以了。执行以后你就可以发现。哇塞~表全导出来了吔~
对了,导出来的表会放在当前路径下。我没有在脚本里加路径。你可以自己加一下你希望的路径。
亲测可行。欢迎追问哈尼。