所以我想格式化我的系统,我在我的localhost上做了很多涉及数据库的工作。我按照通过将数据库导出到SQL文件来备份数据库的常规方法,但我认为我在一个SQL文件中备份所有内容时出错了(我的意思是整个localhost导出到一个SQL文件)
现在的问题是:当我尝试导入备份文件时,我指的是(localhost.sql),我收到类似
的错误表已经存在。INFORMATION_SCHEMA performance_schema
Xampp附带的所有其他表,一直阻止我导入数据库。
这些表是Xampp附带的phpmyadmin表。我已经试图过几天了。
我现在的问题是,我可以从同一个已编译的SQL数据库文件中提取不同的数据库吗?
答案 0 :(得分:5)
要导入数据库,您可以执行以下操作:
mysql -u username -p database_name < /path/to/database.sql
在mysql中:
mysql> use database_name;
mysql> source database.sql;
答案 1 :(得分:1)
错误很明显。表information_schema
和performance_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_schema
或performance_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个简单步骤:
答案 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负责其中的大量垃圾,而我不想保留其中的任何一个,因此我可以轻松地分割出大块。