mysql load dump_熟练掌握mysqldump和load ,mysqlimport,数据不再丢失

语法:

mysqldump(选项)

选项:

--add-drop-table :在每个创建数据表语句前添加删除数据库的语句

--add-locks:备份数据库表时锁定数据库表

--all-databases:备份mysql服务器上的所有数据库

--comments:添加注释信息

--compact:压缩模式,产生更少的输出

--complete-insert:输出完成的插入语句

--databases:指定要备份的数据库

--default-character-set:指定默认字符集

--force:当出现错误时仍然继续备份操作

--host:指定要备份数据库的服务器

--lock-tables:备份前,锁定所有数据库表

--no-create-db:禁止生成创建数据库语句

--no-create-info:禁止生成创建数据库语句

--pasword:连接mysql服务器的密码

--port:mysql服务器的端口号

--user:连接mysql服务器的用户名

1.备份全部数据库的数据和结构

mysqldump -uroot -p123456 -A >F:\all.sql

2.备份全部数据库的结构(加 -d 参数)

mysqldump -uroot -p123456 -A-d>F:\all_struct.sql

3.备份全部数据库的数据(加 -t 参数)

mysqldump -uroot -p123456 -A-t>F:\all_data.sql

4.备份单个数据库的数据和结构(,数据库名mydb)

mysqldump -uroot-p123456 mydb>F:\mydb.sql

5.备份单个数据库的结构

mysqldump -uroot -p123456 mydb-d>F:\mydb.sql

6.备份单个数据库的数据

mysqldump -uroot -p123456 mydb-t>F:\mydb.sql

7.备份多个表的数据和结构(数据,结构的单独备份方法与上同)

mysqldump -uroot -p123456 mydb t1 t2>f:\multables.sql

8.一次备份多个数据库

mysqldump -uroot -p123456 --databases db1 db2>f:\muldbs.sql

还原部分

1.还原全部数据库:

系统命令行: mysql -uroot -p123456

2.还原单个数据库(需指定数据库)

(1) mysql>use mydb

mysql>source f:\mydb.sql

(2) mysql -uroot -p123456 mydb

3.还原单个数据库的多个表(需指定数据库)

(1) mysql>use mydb

mysql>source f:\multables.sql

(2) mysql -uroot -p123456 mydb

4.还原多个数据库,(一个备份文件里有多个数据库的备份,此时不需要指定数据库)

(1) mysql命令行:mysql>source f:\muldbs.sql

(2) 系统命令行: mysql -uroot -p123456

===============================================================分隔线=================================2020-06-08=========================

mysqlimport

--fields-terminated-by=字符串:设置字符串为字段之间的分隔符,可以为单个或多个字符。默认值为制表符“\t”。

-L, --local:表示从客户端任意路径读取文件导入表中,未设置该选项时,默认只从datadir下同名数据库目录下读取文件导入

--ignore-lines=n:表示可以忽略前n行。

-l, --lock-tables:写入时锁定所有表

-p, --password[=name]:指定用户密码

-u, --user=name:指定登入MySQL用户名

-h, --host=name:指定远程连接的服务器

-c, --columns=name:往表里导入指定字段,如:--columns='Name,Age,Gender'

-C, --compress:在客户端和服务器之间启用压缩传递所有信息

1、默认情况下,只能从指定/var/lib/mysql/目录  , --local选项,可以从本机任意路径导入数据

2、数据库存放表目录下同名文件导入表中,只需指定文件名即可

CREATE TABLE`demo` (

`times`datetime NOT NULL DEFAULT '0000-00-00 00:00:00',

`pay`int(11) NOT NULL DEFAULT '0',

`userid`int(11) NOT NULL DEFAULT '0',

`guid`int(11) NOT NULL DEFAULT '0',

`gameid`int(11) NOT NULL DEFAULT '0',

`source`int(11) NOT NULL DEFAULT '0',KEY`times` (`times`),KEY`userid` (`userid`) USING BTREE

) ENGINE=MyISAM DEFAULT CHARSET=utf8

执行sql语句导入

[root@192.168.138.150-mysql-master ~] # mysqlimport -ujumpwbx -pjumpbx -h192.168.138.150 -L test demo.csv --fields-terminated-by=","

test.demo: Records: 3089 Deleted: 0 Skipped: 0 Warnings: 0

SELECT * FROMdemo1INTO OUTFILE "/root/demo.sql"

FIELDS TERMINATEDBY ',' OPTIONALLY ENCLOSED BY '"'LINES TERMINATEDBY '\n';

fields子句:在FIELDS子句中有三个亚子句:TERMINATED BY、 [OPTIONALLY] ENCLOSED BY和ESCAPED BY。如果指定了FIELDS子句,则这三个亚子句中至少要指定一个。

(1)TERMINATED BY用来指定字段值之间的符号,例如,“TERMINATED BY ','”指定了逗号作为两个字段值之间的标志

(2)ENCLOSED BY子句用来指定包裹文件中字符值的符号,例如,“ENCLOSED BY ' " '”表示文件中字符值放在双引号之间,若加上关键字OPTIONALLY表示所有的值都放在双引号之间。

(3)ESCAPED BY子句用来指定转义字符,例如,“ESCAPED BY '*'”将“*”指定为转义字符,取代“\”,如空格将表示为“*N”。

lines子句:在LINES子句中使用TERMINATED BY指定一行结束的标志,如“LINES TERMINATED BY '?'”表示一行以“?”作为结束标志。(默认是\n,即换行分隔)

--------------------------------------------

SELECT * FROM demo1 into outfile '/tmp/aaa0609.sql' FIELDS TERMINATED BY ',';

e0946a0dad1b4620fc1b216d035545ab.png

比较顺利,顺利导出数据,以逗号分隔。

load data

load data 一般和select xxx into outflie ' /path/xxx' ; 配合使用。

LOADDATA[LOW_PRIORITY | CONCURRENT] [LOCAL]INFILE'file_name'

[REPLACE | IGNORE]

INTO TABLEtbl_name[PARTITION (partition_name [, partition_name]...)][CHARACTER SET charset_name]

[{FIELDS | COLUMNS}

[TERMINATED BY 'string']

[[OPTIONALLY] ENCLOSED BY 'char'][ESCAPED BY 'char']][LINES

[STARTING BY 'string']

[TERMINATED BY 'string']][IGNORE number {LINES | ROWS}]

[(col_name_or_user_var

[, col_name_or_user_var]...)][SET col_name={expr | DEFAULT},

[, col_name={expr | DEFAULT}] ...]

Local

如果 load data 使用时指定了 local 关键字,则表示文件放在客户端主机上,从客户端读取文本文件;如果没指定,则表示从服务器主机读取文本文件

replace 和 ignore 关键字

1、replace和 ignore 关键字用于控制与唯一键重复的记录的处理

2、如果指定replace,与唯一键重复的行将被覆盖更新。对于任意记录覆盖更新时,如果唯一键外的各个字段其实都没有变化,那么执行操作时受影响行数为1;如果除唯一键外的任意字段有变化,那么执行操作时受影响行数为2

3、如果指定 ignore ,与唯一键重复的行将被忽略,默认指定 ignore

mysql> desc demo1;

+------------+---------------------+------+-----+---------+----------------+

| Field | Type | Null | Key | Default | Extra |

+------------+---------------------+------+-----+---------+----------------+

| id | int(11) | NO | PRI | NULL | auto_increment |

| orderId | varchar(255) | YES | UNI | NULL | |

| payId | int(11) | YES | | 0 | |

| guid | varchar(255) | YES | | NULL | |

| accountUId | varchar(255) | YES | | NULL | |

| playerId | bigint(20) unsigned | NO | | 0 | |

| price | double | YES | | 0 | |

| channel | varchar(255) | YES | | NULL | |

| mode | varchar(255) | YES | | NULL | |

| argsinfo | text | YES | | NULL | |

| state | int(11) | YES | MUL | 0 | |

| createTime | datetime | YES | | NULL | |

| updateTime | datetime | YES | | NULL | |

+------------+---------------------+------+-----+---------+----------------+

13 rows in set (0.02 sec)

mysql> select * from demo1;

Empty set (0.00 sec)

==========================开始导入数据=========================

mysql> load data infile '/tmp/0609.sql' into table demo1;

9561391791640846cd21f86ac17df1be.png

如果数据在服务器,可以不用local参数。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值