0

我想在不使用网络接口的情况下将我的数据库“dbname”中的 sqldump 文件导入到表“data”中。

当我通过导入文件时

mysql dbname -u databaseuser -pdatabasepass<data.sql

这在我的 ubuntu 12.04 上真的很

但是当我改用它时:

mysqlimport -u databaseuser -pdatabasepass --local data.sql

它和平常一样快。

我想,因为在我的机器上,它在使用“mysql”和“<”时分别解析每一行

有没有办法使用 mysqlimport 语法来导入带有 CREATE 和 DROP TABLE 东西的 sql 文件?

也许只是自动拆分sql-dump中的上部(使用drop table和create table语句),然后只将带有INPUT语句的文件的其余部分发送到mysqlinsert,这应该可以

4

3 回答 3

0

您可以使用(或 -S)指定 UNIX 套接字文件的路径--socket=/path/to/...,这可能会更快。您可以在服务器的 my.cnf 中找到套接字路径。因此,例如(我只是在这里编造路径);

mysql dbname -u databaseuser -pdatabasepass -S /var/run/mysqld/mysqld.sock < data.sql
于 2012-05-07T19:55:10.420 回答
0

您可以使用此脚本:如何将 mysqldump 的输出拆分为较小的文件?

并对其进行修改,因此您只有一个文件中的创建语句和另一个文件中的数据语句。

于 2013-05-30T16:10:32.590 回答
0

没有办法直接做到这一点。您需要做的是运行mysqldump --tab而不是正常的 mysqldump,这将创建一个包含表定义的 .sql 文件和一个包含可以使用 mysqlimport 导入的数据的 CSV 文件。

于 2012-05-07T17:52:54.743 回答