mysql : 表的导出和导入

表的导出和导入:
SELECT ...... INTO OUTFILE 导出文本文件,该方法只能导出到数据库服务器上,并且导出文件不能已存在。

MYSQL> SELECT ...... INTO OUTFILE filename [OPTIONS]
MYSQL> SELECT * FROM test.person INTO OUTFILE "C:\person0.txt";
# 将表person里的数据导入为文本文件person0.txt。


mysqldump文件导出文本文件:

(注:和INTO OUTFILE不一样的是该方法所有的选项不需要添加引号)

$> mysqldump -T path -u root -h host -p dbname [tables] [OPTIONS]
# -T参数表明导出文本文件。path导出数据的目录。
$> mysqldump -T C:\test person -u root -h host -p
# 将test表中的person表导出到文本文件。执行成功后test目录下会有两个文件,person.sql和person.txt


mysql命令导出文本文件:

MYSQL> mysql -u root -p --execute="SELECT * FROM person;" test > C:\person3.txt;
# 将test数据库中的person表数据导出到person3.txt文本文件中。--vartical参数可以将一行分为多行显示。
MYSQL> mysql -u root -p --vartical --execute="SELECT * FROM person;" test > C:\person3.txt;
# --html将表导出为html文件,--xml文件将表导出为xml文件

LOAD DATA INFILE导入文本文件:

MYSQL> LOAD DATA INFILE 'filename.txt' INTO TABLE tablename [OPTIONS] [IGNORE number LINES];
# [IGNORE number LINES]表示忽略行数
MYSQL> LOAD DATA INFILE 'C:\person0.txt' INTO TABLE test.person;


mysqlimport导入文本文件:

$> mysqlimport -u root -p dbname filename.txt [OPSTONS]
# 导入的表名有文件名决定,导入数据之前表必须存在
$> mysqlimport -uroot -p test C:\backup\person.txt
# 将数据导入到test数据库的person表中。

使用mysqlbinlog恢复数据:
$> mysqlbinlog [option] filename | mysql -u user -p password
# filename为二进制日志文件,
$> mysqlbinlog --stop-date="2013-03-30 15:27:47" D:\MySQL\log\binlog\binlog.000008 | mysql -u root -p password
# 根据日志文件binlog.000008将数据恢复到2013-03-30 15:27:47以前的操作。

启动二进制日志:
log-bin = path/filename #日志文件存储目录和文件名
expire_log_days = 10    #日志自动删除时间
max_binlog_size = 100M  # 日志文件最大大小

查看二进制日志:
MYSQL> SHOW VARIABLES LIKE 'log_%';
MYSQL> SHOW BINARY LOGS;
$> mysqlbinlog filename
# filename为二进制日志文件名。

删除二进制日志:
MYSQL> RESET MASTER; #删除所有二进制日志
MYSQL> PURGE {MASTER | BINARY} LOGS TO 'log_name';  #删除文件编号小于log_name编号的文件
MYSQL> PURGE {MASTER | BINARY} LOGS BEFORE 'date';  #删除指定日期以前的文件

暂时停止二进制日志:

(注:不需要重启mysql服务)
MYSQL> SET sql_log_bin = {0|1}  #暂停或启动二进制日志。


 

你可能感兴趣的:(SQL)