在Localhost

时间:2017-02-28 22:25:11

标签: mysql

所以我想格式化我的系统,我在我的localhost上做了很多涉及数据库的工作。我按照通过将数据库导出到SQL文件来备份数据库的常规方法,但我认为我在一个SQL文件中备份所有内容时出错了(我的意思是整个localhost导出到一个SQL文件)

现在的问题是:当我尝试导入备份文件时,我指的是(localhost.sql),我收到类似

的错误
  表已经存在。

     
    

INFORMATION_SCHEMA     performance_schema

  

Xampp附带的所有其他表,一直阻止我导入数据库。

这些表是Xampp附带的phpmyadmin表。我已经试图过几天了。

我现在的问题是,我可以从同一个已编译的SQL数据库文件中提取不同的数据库吗?

4 个答案:

答案 0 :(得分:5)

要导入数据库,您可以执行以下操作:

mysql -u username -p database_name < /path/to/database.sql

在mysql中:

mysql> use database_name;
mysql> source database.sql;

答案 1 :(得分:1)

错误很明显。表information_schemaperformance_schema已经在您尝试导入的MySQL服务器实例中。

这两个数据库在MySQL中都是默认的,因此您尝试将这些数据库导入到另一个MySQL安装中是很奇怪的。创建要从命令行导入的.sql文件的基本语法是:

$ mysqldump -u [username] -p [database name] > sqlfile.sql

或者对于多个数据库:

$ mysqldump --databases db1 db2 db3 > sqlfile.sql

然后将它们导入另一个MySQL安装:

$ mysql -u [username] -p [database name] < sqlfile.sql

如果数据库已存在于MySQL中,那么您需要执行以下操作:

$ mysqlimport -u [username] -p [database name] sqlfile.sql

这似乎是您要使用的命令,但是我从未替换information_schemaperformance_schema数据库,因此我不确定这是否会削弱您的MySQL安装。

所以一个例子是:

$ mysqldump -uDonglecow -p myDatabase > myDatabase.sql
$ mysql -uDonglecow -p myDatabase < myDatabase.sql

请记住不要在命令行上提供密码,因为这将在命令历史记录中以纯文本显示。

答案 2 :(得分:0)

unzip -p /pathoffile/database_file.zip | mysql -uusername -p databsename;

在localhost中导入数据库的最佳方法有5个简单步骤:

    首先压缩
  1. zip sql文件以压缩数据库大小。
  2. 去termianl。
  3. 创建空数据库。
  4. 运行命令使用导入数据库将数据库解压缩:unzip -p /pathoffile/database_file.zip | mysql -uusername -p databsename;
  5. 输入密码

答案 3 :(得分:0)

以前的响应者似乎遗漏的一点是,使用以下命令将转储文件localhost.sql馈入mysql

%mysql -u [用户名] -p [数据库名]

生成多个数据库,因此在命令行上指定单个数据库名称是不合逻辑的。

我遇到了这个问题,我的解决方案是不在命令行上指定[数据库名称],而是运行:

%mysql -u [用户名] -p

有效。

实际上,由于先前的尝试,它无法立即生效 确实在mysql中创建了一些结构,而localhost.sql中的那些位 使mysql抱怨,因为它们从头开始就已经存在,所以 现在无法再次创建它们。

解决该问题的方法是使用类似的修改手动编辑localhost.sql INSERT IGNORE for INSERT(因此它不会重新插入相同的内容,也不会抱怨) 如果不存在创建数据库,则创建数据库 如果CREATE TABLE不存在,则创建CREATE TABLE 并在它们产生错误时完全删除ALTER TABLE命令,因为到那时 它们已经被执行了((出于相同的原因,也许还有INSERT和CREATEs。)。您可以使用DESCRIBE TABLE和SELECT命令检查表,以确保ALTERATION等已成立,以确保信心。

我自己的localhost.sql文件是300M,这是我最喜欢的编辑器emacs抱怨的,所以我不得不使用

%head -n 20000 localhost.sql | tail -n 10000> 2nd_10k_lines.sql

并一次通过10k行。并不太难,因为drupal负责其中的大量垃圾,而我不想保留其中的任何一个,因此我可以轻松地分割出大块。