语法:
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 ',';
比较顺利,顺利导出数据,以逗号分隔。
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;
如果数据在服务器,可以不用local参数。