MySQL数据库导入-恢复方法
MySQL数据库导入-恢复方法
在MySQL中有两种简单的方法可以从以前备份的文件恢复到MySQL数据库。
使用LOAD DATA导入数据:
MySQL提供了一个LOAD DATA语句,用作批量恢复数据。以下示例,它从您当前目录中读取文件dump.txt ,并将其加载到当前数据库中的表mytbl中:
mysql> LOAD DATA LOCAL INFILE 'dump.txt' INTO TABLE mytbl;
MySQL从指定位置读取文件,如果LOCAL关键字不存在,MySQL将使用绝对路径名来查找主机上的数据文件指定文件的位置,从文件系统的根目录开始。
默认情况下,LOAD DATA假定数据文件的命令由linefeeds(换行)终止,并且每行的数据值由tab符号分隔。
要显式指定文件格式,请使用字段子句来描述行中字段的特征,并使用行子句来指定行结束序列。以下负载数据语句指定数据文件包含以冒号和换行符分隔的值(以回车符和换行符) :
mysql> LOAD DATA LOCAL INFILE 'dump.txt' INTO TABLE mytbl -> FIELDS TERMINATED BY ':' -> LINES TERMINATED BY '\r\n';
LOAD DATA假定数据文件中的列与表中的列具有相同的顺序。如果不是,您可以指定一个列表来指示应该将数据文件列加载到哪个表列。假设您的表具有a、b和c列,但数据文件中的连续列与b、c和a对应,可以加载如下文件:
mysql> LOAD DATA LOCAL INFILE 'dump.txt' -> INTO TABLE mytbl (b, c, a);
使用mysqlimport导入数据
MySQL还包括一个名为mysqlimport的实用程序,以便您可以直接从命令行加载输入文件。
要将dump.txt中的数据加载到mytbl中,请在UNIX提示符下使用以下命令。
$ mysqlimport -u root -p --local database_name dump.txt password *****
如果使用mysqlimport,则命令行选项提供格式说明符。与前两个加载数据语句对应的mysqlimport命令如下所示:
$ mysqlimport -u root -p --local --fields-terminated-by=":" \ --lines-terminated-by="\r\n" database_name dump.txt password *****
您指定选项的顺序无关紧要。
mysqlimport语句使用-专栏选项指定列顺序:
$ mysqlimport -u root -p --local --columns=b,c,a \ database_name dump.txt password *****
处理特殊字符
字段子句除了TERMINATED BY,还可以指定其他格式选项。默认情况下,LOAD DATA 假定值为非挂牌,并将反斜杠( \)解释为特殊字符的转义符。要显式地指示引用字符的值,请使用;MySQL将从输入处理期间的数据值的末尾剥去该字符。要更改默认转义符,请使用ESCAPED BY。
当您指定ENCLOSED BY以指示引用字符应从数据值中删除时,可以将报价字符包括在数据值中,并将其翻倍,或者在数据值之前加上转义符。例如,如果引号和转义字符是" and \,,输入值是"a""b\"c",那么它将被解释为a"b"c