如何从包含多个数据库的.sql文件导入单个数据库

时间:2014-11-27 12:01:37

标签: mysql sql backup mysqlimport

如何从包含多个数据库的备份文件导入单个数据库?

主要问题是该文件是921mb,因此我无法在记事本或任何IDE中成功打开它。如果我能做到这一点,我会得到我需要的SQL,只需手动将其复制到phpMyAdmin。

如果我可以直接从备份文件中导入它,那将是件好事。

我想这会是这样的,但我无法让它发挥作用

mysql -u root -p --database1 database1 < backup.sql

有人可以帮忙吗?感谢

2 个答案:

答案 0 :(得分:0)

目标数据库是否已存在?

如果是这样的话:

mysqlimport -u [uname] -p[pass] [dbname] [backupfile.sql]

否则:

mysql -u [uname] -p[pass] [db_to_restore] < [backupfile.sql]

答案 1 :(得分:0)

我遇到了一些带有一些数据加载脚本的问题。脚本的格式如下:

insert into table(a,b,c) values((a0,b0,c0),(a1,b1,c1),...(a50000,b50000,c50000));

并包含5到数十个超长语句。我希望将数据导入的系统无法识别此格式。这需要以下形式:

insert into table(a,b,c) values(a0,b0,c0);
insert into table(a,b,c) values(a1,b1,c1);
...
insert into table(a,b,c) values(a50000,b50000,c50000);

即使较小的脚本也只有几MB,并且需要一个小时才能加载到文本编辑器中。因此,在标准文本编辑器中进行这些更改是不可能的。我写了一个快速的小Java应用程序,它以第一种格式读取并创建了一个由第二种格式组成的文本文件。即使是最大的脚本也总共不到20秒。是的,这不是几分钟。即使很多数据都是引用文本,所以我不得不让解析器引用引号。

您可以编写自己的应用程序(Java,C#,Perl等)来做类似的事情。仅将与所需数据库相关的行写入单独的脚本文件。编写和测试应用程序需要花费几个小时或几天的时间,但它可能不仅仅是为了研究使用非常大的文件的文本编辑器 - 只是为了发现它们并非真的。 / p>