博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
尝试OUTFIle、INFILE快速导入导出数据
阅读量:6986 次
发布时间:2019-06-27

本文共 2287 字,大约阅读时间需要 7 分钟。

尝试OUTFIle、INFILE快速导入导出数据

应用场景:

前几天开发突然有这么一个需求,想导一份200多G的mysql数据出来到另一台机器上,而且时间有点赶,第一时间就想要使用Xtrabackup来全备与增备。但想到之前使用Xtrabackup来备份恢复的时候出现了各种坑,就问了下同事有什么好建议来快速导出导入数据,后来知道了可以使用select into outfile导出表数据,就冒着尝试一下的心里去弄了一下,得到的结果是惊人的,个人感觉速度要比Xtrabackup快很多。

使用select into outfile导出表数据:

(一个for循环定义自己需要操作的数据库名称,把数据导入到/data/tmp目录下)

for table in `echo oat_inventory_in oat_inventory_out oat_inventory_defective_out oat_reject oat_reject_line oat_goods oat_goods_related oat_order oat_order_line oat_purchase oat_purchase_line oat_invcheck oat_inventory_deal oat_stage_invent oat_inventory oat_receives oat_withdraw oat_deduct oat_order_provide_amount oat_order_coordinate oat_order_distribution oat_refund oat_entity_amount oat_stage_entityfund oat_entity_frozen_detail oat_entity oat_funds_detail`doecho $tablemysql -u root -pPassword dbname -e "select * into outfile '/data/tmp/$table.txt' fields terminated by ',' from $table;"done

导出表结构:

(因为上述只是倒入数据,而表的结构则需要使用mysqldump方式去导出)

/usr/local/mysql/bin/mysqldump -u root -pPassword -d dbname oat_inventory_in oat_inventory_out oat_inventory_defective_out oat_reject oat_reject_line oat_goods oat_goods_related oat_order oat_order_line oat_purchase oat_purchase_line oat_invcheck oat_inventory_deal oat_stage_invent oat_inventory oat_receives oat_withdraw oat_deduct oat_order_provide_amount oat_order_coordinate oat_order_distribution oat_refund oat_entity_amount oat_stage_entityfund oat_entity_frozen_detail oat_entity oat_funds_detail > struct.sql

将导出的结构与数据文件scp到目标主机上(建议数据scp之前先压缩):

scp -P 22 /data/tmp/*.gz chenmingle@192.168.1.1:/data

在新的数据库上面导入表结构:

mysql -u root -pPassword dbname <  struct.sql

使用 load data infile 导入数据:

for table in `echo oat_inventory_out oat_inventory_defective_out oat_reject oat_reject_line oat_goods oat_goods_related oat_order oat_order_line oat_purchase oat_purchase_line oat_invcheck oat_inventory_deal oat_stage_invent oat_inventory oat_receives oat_withdraw oat_deduct oat_order_provide_amount oat_order_coordinate oat_order_distribution oat_refund oat_entity_amount oat_stage_entityfund oat_entity_frozen_detail oat_entity oat_funds_detail`doecho $tablemysql -u root -pPassword dbname -e "LOAD DATA INFILE '/home/tmp/$table.txt' INTO TABLE $table FIELDS TERMINATED BY ','"done

转载于:https://blog.51cto.com/legehappy/2160274

你可能感兴趣的文章
AIX修改系统时间 命令
查看>>
Window_Open详解
查看>>
金蝶CLOUD索引碎片超过80的表重建索引
查看>>
Javascript基础系列之(五)条件语句(比较操作符)
查看>>
小小攻城师,步步达成梦想!
查看>>
C语言技巧之长度为0的数组
查看>>
ruby gem passenger依赖关系
查看>>
vsftpd的不同安装方式及服务控制脚本
查看>>
JS(截取字符串,显示当前系统时间yyyy-MM-dd,从文本框得到的数值计算)
查看>>
linux文件系统基本知识
查看>>
腾讯邓君:《王者荣耀》翻过的同步技术相关的三座大山
查看>>
PHP案例 网页计数器设计
查看>>
算出两个经纬度的距离(米)
查看>>
我的友情链接
查看>>
树莓派2代B model 上手初体验,不用显示器,Python GPIO 点亮一颗LED
查看>>
114DNS Public DNS+ 阿里DNS 百度DNS 360 DNS派 Google DNS公共DNS评测体验报告
查看>>
[SOJ]连通性问题
查看>>
SpringMVC日期类型转换问题三大处理方法归纳
查看>>
javascript6
查看>>
lnmp 一键安装包部署ThinkPHP5
查看>>