MySQL – 数据库导入 – 恢复方法
MySQL – 数据库导入 – 恢复方法
在 MySQL 中有两种简单的方法可以将数据从先前备份的文件加载到 MySQL 数据库中。
使用 LOAD DATA 导入数据
MySQL 提供了一个 LOAD DATA 语句,用作批量数据加载器。这是一个示例语句,它从当前目录读取文件dump.txt并将其加载到当前数据库中的表mytbl中。
mysql> LOAD DATA LOCAL INFILE 'dump.txt' INTO TABLE mytbl;
-
如果LOCAL关键字不存在,MySQL 会使用绝对路径名来查找服务器主机上的数据文件,绝对路径名完全指定了文件的位置,从文件系统的根开始。MySQL 从给定位置读取文件。
-
默认情况下,LOAD DATA假定数据文件包含由换行符(换行符)终止的行,并且一行中的数据值由制表符分隔。
-
要明确指定文件格式,请使用FIELDS子句来描述行内字段的特征,并使用LINES子句来指定行尾顺序。以下LOAD DATA语句指定数据文件包含由冒号和以回车符和换行符终止的行分隔的值。
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的实用程序,它充当 LOAD DATA 的包装器,以便您可以直接从命令行加载输入文件。
要将dump.txt 中的数据加载到mytbl 中,请在 UNIX 提示符下使用以下命令。
$ mysqlimport -u root -p --local database_name dump.txt password *****
如果使用mysqlimport,命令行选项提供格式说明符。与前面两个LOAD DATA语句对应的mysqlimport命令如下面的代码块所示。
$ mysqlimport -u root -p --local --fields-terminated-by = ":" \ --lines-terminated-by = "\r\n" database_name dump.txt password *****
指定选项的顺序对于 mysqlimport 无关紧要,只是它们都应位于数据库名称之前。
该mysqlimport的语句使用–columns选项来指定列的顺序-
$ mysqlimport -u root -p --local --columns=b,c,a \ database_name dump.txt password *****
处理引号和特殊字符
FIELDS 子句可以指定除TERMINATED BY之外的其他格式选项。默认情况下,LOAD DATA 假定值不带引号,并将反斜杠 (\) 解释为特殊字符的转义字符。要显式指示值引用字符,请使用ENCLOSED BY命令。MySQL 会在输入处理期间从数据值的末尾去除该字符。要更改默认转义字符,请使用ESCAPED BY。
当您指定 ENCLOSED BY 以指示应从数据值中去除引号字符时,可以通过将引号字符加倍或在其前面加上转义字符来将引号字符逐字包含在数据值中。
例如,如果引号和转义字符是 ” 和 \,则输入值“a””b\”c”将被解释为a”b”c。
对于mysqlimport,用于指定引号和转义值的相应命令行选项是–fields-enclosed-by和–fields-escaped-by。