2013-11-27 44 views
3

mysqldump具有“--tab”选项,可以分离每个表的转储单独文件。 mysql为每个表创建一个.sql文件(包含模式)和一个.txt文件(包含数据)。mysql:恢复使用mysqldump中的“--tab”选项创建的备份

.sql文件工作正常,但是如何从.txt文件导入数据?

+0

您是否尝试过使用MySQL Workbench? http://www.mysql.com/products/workbench/,有一些很好的备份和恢复数据的功能 – Tommassiov

+0

你能说明一个.txt文件是怎么样的吗? –

+0

这是一个使用选项卡的CSV文件,就这些。你必须使用'load data infile'和相应的设置。 –

回答

4

正式文件并不隐蔽导入这些*.txt和外键约束的情况下。在mysqlimport中仍然有开放的长命令bug#19996来实现外键忽略。所以它必须手动完成。

#!/bin/bash -e 

DIR=/path/to/csv/backup 
DATABASE=database 
USER=user 
PASSWORD=password 

for filename in $DIR/*.txt 
do 
tablename=`basename $filename .txt` 
mysql --user=$USER --password=$PASSWORD $DATABASE <<EOF 
    SET FOREIGN_KEY_CHECKS=0; 
    LOAD DATA INFILE '$filename' INTO TABLE \`$tablename\`; 
EOF 
done 

此外,我想指出,有一个在存储由mysqldump --tab产生这些每个表*.sql文件中没有太大的意义,因为这里还田外键的问题。由于架构总是已知的,我建议在备份完成后删除它们。