mysqldump具有“--tab”选项,可以分离每个表的转储单独文件。 mysql为每个表创建一个.sql文件(包含模式)和一个.txt文件(包含数据)。mysql:恢复使用mysqldump中的“--tab”选项创建的备份
.sql文件工作正常,但是如何从.txt文件导入数据?
mysqldump具有“--tab”选项,可以分离每个表的转储单独文件。 mysql为每个表创建一个.sql文件(包含模式)和一个.txt文件(包含数据)。mysql:恢复使用mysqldump中的“--tab”选项创建的备份
.sql文件工作正常,但是如何从.txt文件导入数据?
我找到了自己的解决方案,在这里看到: http://dev.mysql.com/doc/refman/5.1/en/reloading-delimited-text-dumps.html
正式文件并不隐蔽导入这些*.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
文件中没有太大的意义,因为这里还田外键的问题。由于架构总是已知的,我建议在备份完成后删除它们。
您是否尝试过使用MySQL Workbench? http://www.mysql.com/products/workbench/,有一些很好的备份和恢复数据的功能 – Tommassiov
你能说明一个.txt文件是怎么样的吗? –
这是一个使用选项卡的CSV文件,就这些。你必须使用'load data infile'和相应的设置。 –