mysql数据逻辑导入导出

mysqldump/select into 迁移数据
一. 基于条件dump数据
mysqldump -uroot -p--single-transaction --skip-triggers  \
 --databases erp_database --tables erp_orders --where \
"orders_export_time >='2018-09-01 00:00:00' and orders_export_time<'2018-09-02 00:00:00'" >order20180904.sql

二. 使用select into outfile/ load data infile into table 导入出数据
select 
    a.* 
from 
    `erp_orders_products` a, 
    `erp_orders` b 
where 
    a.`erp_orders_id` = b.`erp_orders_id` 
    and b.`orders_export_time` >= '2018-09-01 00:00:00' 
    and b.`orders_export_time` < '2018-09-02 00:00:00'
    into outfile "/tmp/erp_orders_products.csv" fields terminated by ',' optionally  enclosed by '"' lines terminated by '\n';
    
load data infile "/tmp/erp_orders_products.csv" into table erp_orders_products fields terminated by ',' optionally  enclosed by '"' lines terminated by '\n';

三. mysqldump使用例子
mysqldump 导出数据库各参数详细说明

下面我们详细介绍一下mysqldump导出的各种实例:

1 导出一个数据库的结构

mysqldump -d dbname -uroot -p > dbname.sql

2 导出多个数据库的结构

mysqldump -d -B dbname1 dbname2 -uroot -p > dbname.sql

3 导出一个数据库中数据(不包含结构)

mysqldump -t dbname -uroot -p > dbname.sql

4 导出多个数据库中数据(不包含结构)

扫描二维码关注公众号,回复: 4007039 查看本文章

mysqldump -t -B dbname1 dbname2 -uroot -p > dbname.sql

5 导出一个数据库的结构以及数据

mysqldump dbname -uroot -p > dbname.sql

6 导出多个数据库的结构以及数据

mysqldump -B dbname1 dbname2 -uroot -p > dbname.sql

7 导出一个数据库中一个表的结构

mysqldump -d dbname1 tablename -uroot -p > tablename.sql

8 导出一个数据库中多个表的结构

mysqldump -d -B dbname1 --tables tablename1 tablename2 -uroot -p > tablename.sql

9 导出一个数据库中一个表的数据(不包含结构)

mysqldump -t dbname1 tablename -uroot -p > tablename.sql

10 导出一个数据库中多个表的数据(不包含结构)

mysqldump -t -B dbname1 --tables tablename1 tablename2 -uroot -p > tablename.sql

11 导出一个数据库中一个表的结构以及数据

mysqldump dbname1 tablename -uroot -p > tablename.sql

12 导出一个数据库中多个表的结构以及数据

mysqldump -B dbname1 --tables tablename1 tablename2 -uroot -p > tablename.sql

  
13 导出一个表中的部分数据
mysqldump -uroot -pym0bxmPeHHJqssBe --single-transaction --skip-triggers \
--databases erp_database --tables erp_orders --where \
"orders_export_time >='2018-09-01 00:00:00' and orders_export_time<'2018-09-02 00:00:00'" >order20180904.sql 
 

存储过程&函数操作

1 只导出存储过程和函数(不导出结构和数据,要同时导出结构的话,需要同时使用-d)

mysqldump -R -ndt dbname -u root -p > dbname.sql

2 只导出事件

mysqldump -E -ndt dbname -u root -p > dbname.sql

3 不导出触发器(触发器是默认导出的–triggers,使用–skip-triggers屏蔽导出触发器)

mysqldump --skip-triggers dbname1 -u root -p > dbname.sql

把导出的数据导入到数据库

mysql -u root -p
use dbname;
source dbname.sql
 
总结一下:
-d 结构(--no-data:不导出任何数据,只导出数据库表结构)

-t 数据(--no-create-info:只导出数据,而不添加CREATE TABLE 语句)

-n (--no-create-db:只导出数据,而不添加CREATE DATABASE 语句)

-R (--routines:导出存储过程以及自定义函数)

-E (--events:导出事件)

--triggers (默认导出触发器,使用--skip-triggers屏蔽导出)

-B (--databases:导出数据库列表,单个库时可省略)

--tables 表列表(单个表时可省略)
①同时导出结构以及数据时可同时省略-d和-t
②同时 不 导出结构和数据可使用-ntd
③只导出存储过程和函数可使用-R -ntd
④导出所有(结构&数据&存储过程&函数&事件&触发器)使用-R -E(相当于①,省略了-d -t;触发器默认导出)
⑤只导出结构&函数&事件&触发器使用 -R -E -d

四. select/load 使用说明
select * from table into outfile '/path/filename.csv' fields character set gbk terminated by ',' optionally enclosed by '"'  ESCAPED BY "\\" LINES TERMINATED BY '\n';
FIELDS TERMINATED BY '字符串':设置字符串为字段之间的分隔符,可以为单个或多个字符。默认值是“\t”。
FIELDS ENCLOSED BY '字符':设置字符来括住字段的值,只能为单个字符。默认情况下不使用任何符号。
FIELDS OPTIONALLY ENCLOSED BY '字符':设置字符来括住CHAR、VARCHAR和TEXT等字符型字段。默认情况下不使用任何符号。
FIELDS ESCAPED BY '字符':设置转义字符,只能为单个字符。默认值为“\”。
LINES STARTING BY '字符串':设置每行数据开头的字符,可以为单个或多个字符。默认情况下不使用任何字符。
LINES TERMINATED BY '字符串':设置每行数据结尾的字符,可以为单个或多个字符。默认值是“\n”。
character set                : 设置字符编码


load data infile '/tmp/erp_orders_products.csv' into table tablename character set utf8 terminated by ',' optionally enclosed by '"'  ESCAPED BY "\\" LINES TERMINATED BY '\n';

猜你喜欢

转载自blog.csdn.net/u012482502/article/details/82462731
今日推荐