首先,我的初衷只是想重命名/复制数据库。但是知识的力量正在进一步扩展。
我知道ConnectionProvider
。我也知道mysqldump db | mysql db
导入单个CSV。
MySQL有一种很好的方式将数据库以CSV格式转储到单个文件夹中
LOAD LOCAL DATA INFILE
现在该文件夹将同时包含每个表(mysqldump -T/some/folder db
)的SQL和TXT文件
之所以选择这种方法,是因为我有一个4Gb大小的数据库,而使用传统的导入速度却很慢。我听说使用CSV导入可能会带来更好的性能。
问题:
是否有任何官方方法进行反向操作,即从同时包含SQL和TXT文件的文件夹中进行读取?
像这样的导出然后导入可以确保原始数据库的精确副本吗? (索引,主变量,唯一性,视图等)
编辑:
所以我做了一些研究。
不是最好的方法,但这是从官方文档进行反向操作https://dev.mysql.com/doc/refman/5.7/en/reloading-delimited-text-dumps.html(O.Jones'answer)
如果我们按字母顺序逐个循环遍历文件夹并导入文件,最终将遇到InnoDB密钥约束问题。禁用密钥检查似乎无法解决问题。
相当神话,但table1.sql, table1.txt, ...
和mysqldump
然后由于许多优化,导入SQL似乎比CSV更快!使用的命令是--opt
而不是mysqlimport
(我会稍后尝试查看是否有任何区别)
答案 0 :(得分:0)
这有点晚了,但是你可以用 bash 做一个小技巧。
cd 到文件所在的文件夹:
for x in $(ls *.txt); do mysqlimport -u YOURUSER -pYOURPASS --local database_to_import_into $x;done
这会奏效。