我想在我的数据库中导入一个sqldump文件" dbname"进入表格"数据"不使用网络接口。
当我通过
导入文件时mysql dbname -u databaseuser -pdatabasepass<data.sql
这在我的ubuntu 12.04上真的缓慢
但是当我使用它时:
mysqlimport -u databaseuser -pdatabasepass --local data.sql
它和正常一样快。
我认为,因为在我的mashine上,当使用&#34; mysql&#34;时,它会分别解析每一行。和&#34;&lt;&#34;
有没有办法使用mysqlimport语法导入带有CREATE和DROP TABLE东西的sql文件?
可能只是自动拆分sql-dump中的上部(使用drop table和create table语句),然后只将带有INPUT语句的其余文件发送到mysqlinsert,这应该可以工作
答案 0 :(得分:0)
没有办法直接这样做。您需要做的是运行mysqldump --tab
而不是正常的mysqldump,它将创建包含表定义的.sql文件和包含可以使用mysqlimport导入的数据的CSV文件。
答案 1 :(得分:0)
您可specify the path to a UNIX socket file使用--socket=/path/to/...
(或-S),这可能会更快。您可以在服务器的my.cnf中找到套接字路径。所以,例如(我只是在这里编写路径);
mysql dbname -u databaseuser -pdatabasepass -S /var/run/mysqld/mysqld.sock < data.sql
答案 2 :(得分:0)
您可以使用此脚本:How do I split the output from mysqldump into smaller files?
并对其进行修改,因此您只在一个文件中包含create-statements,在另一个文件中只包含数据语句。