查询结果导出:
脚本中执行
方式一:
mysql -h xxx -uxxx -pxxx -P 3306 -D db_name -e "select * from mblog_info order by mid desc limit 10" > data.txt
方式二:
mysql -h xxx -uxxx -pxxx -P 3306 -D db_name < test.sql > data.txt
导出数据库数据
mysqldump -uroot -p dp_db > dumpout.sql
导入数据
向dp_db_bak数据库导入数据
mysql -uroot -p dp_db_bak --default-character-set=utf8 -f< ~/dumpout.sql
-f:fource忽略错误
P.S. 如果在导入导出数据的时候遇到文件太大异常退出的情况,可使用split/cat来进行文件的分割和合并
mysqldump -uroot -p dp_db | split -b 10m - tempfile
cat all_tempfile > targetfile
其他方法:
Mysql source命令在导入大数据时显得非常有用。虽然Mysql Administrator软件也不错,但就稳定性和效率性来说还是source占优。
使用方法:
Windows下将sql数据库备份拷贝到磁盘目录如:D:\db.sql,cmd进入命令行。
1、先使用命令mysql -uroot -p登陆mysql服务器
2、然后执行相关命令导入数据。
mysql> use dbtest; //设置当前要导入数据的dbtest数据库
mysql> set names utf8; //设置编码
mysql> source D:\db.sql; //导入数据
ok,完成。当然数据库备份用Mysql Administrator是非常方便的
mysql通过拷贝数据文件的方式进行数据库迁移
第三种方案的优点:时间占用短,文件可断点传输,操作步骤少。缺点:新旧服务器中MySQL版本及配置必须相同,可能引起未知问题。
注意:ibdata1一定不要忘记拷贝,且要拷贝到准确的位置
在Linux下也是类似的方式,但要注意拷贝完文件后,记得改下data文件夹owner为mysql
补充mysqldump
mysqldump完整参数
mysqldump -hlocalhost -P3307 -ubj -p123456 --tables zx site_result --skip-add-drop-table --no-create-info --where="auto_id >9014827" --default-character-set=utf8> ./ste_result.sql
老版本:
mysqldump -h localhost -P3307 -u root -p123456 zx site_result -t -w"auto_id >9014827" --complete-insert --skip-extended-insert --no-autocommit --default-character-set=utf8 > ./ste_result.sql
样例:
只导出结构
mysqldump -h localhost -P3307 -u root -p123456 -d zx site_result --default-character-set=utf8>site_result.sql
只导出数据
mysqldump -h localhost -P3307 -u root -p123456 zx site_result -t -w"auto_id >9014827"--default-character-set=utf8 --skip-lock-table
> ./site_result.sql
结构+数据
mysqldump -h localhost -P3307 -u root -p123456 zx site_result --table -w"auto_id >9014827"--default-character-set=utf8 --skip-lock-table
> ./site_result.sql
mysqldump --column-statistics=0 -h xx -P3307 -ubj -pxx --databases st_event_data --default-character-set=utf8 > st_event_data.sql |
导出数据库但是忽略某表
mysqldump -u [用户名] -p db1 --ignore-table=db1.table1 --ignore-table=db1.table2 > db1_backup.sql
--skip-lock-table 跳过锁表
如果只需要导出表的结构,那么可以使用mysqldump的 -d 选项
mysqldump -uroot -p -d databasename > createtab.sql
mysqldump -uroot -p -d databasename test1 test2 test3 > createtab.sql
导出指定表结构和数据 可以使用mysqldump -tables
mysqldump -uroot -p --tables databasename > createtab.sql
有时间拆分导出结果,不想要默认带的drop,create等语句用--skip-option
--no-create-db, ---取消创建数据库sql(默认存在)
--no-create-info,---取消创建表sql(默认存在)
--no-data ---不导出数据(默认导出)
--add-drop-database ---增加删除数据库sql(默认不存在)
--skip-add-drop-table ---取消每个数据表创建之前添加drop数据表语句(默认每个表之前存在drop语句)
--skip-add-locks ---取消在每个表导出之前增加LOCK TABLES(默认存在锁)
--skip-comments ---注释信息(默认存在)
如果只想根据查询条件导出部分数据 用--where
mysqldump -uroot -p123456 meteo sdata --where=" sensorid=11 and fieldid=0" > /home/xyx/Temp.sql
默认导出的数据是压缩格式
如果希望导入的是一条一条添加参数:--skip-extended-insert