题 如何在MySQL中使用命令行导入SQL文件?


我有一个 .sql 从中导出的文件 phpMyAdmin。我想使用命令行将其导入到不同的服务器中。

我有一个 Windows Server 2008 R2安装。我放了 .sql 文件上 C盘,我试过这个命令

database_name < file.sql

它不起作用我得到语法错误。

  • 如何导入此文件没有问题?
  • 我是否需要先创建数据库?

1314
2017-07-16 00:43


起源


可能重复 使用命令行还原MYSQL转储文件 - Bill Karwin
可能重复 stackoverflow.com/questions/11407349/... - AZinkey
什么是这些重复的家伙?这确实是一个有用的问题,有其自身的目的 - Valentino Pereira


答案:


尝试:

mysql -u username -p database_name < file.sql

检查 MySQL选项

注1: 最好使用SQL文件的完整路径 file.sql

笔记2: 使用 -R 和 --triggers 保持原始数据库的例程和触发器。默认情况下不会复制它们。


2573
2017-07-16 00:48



当我从像Toad这样的程序运行文件时,我没有错误,但是当我从命令行运行它时,我得到了我提到的错误 - Jaylen
注意,是的,如果它已经不存在,你必须从mysql创建(空)数据库,然后才能导入它。 - Skippy le Grand Gourou
Yups,记得从MySQL控制台创建一个空数据库(如果以前不存在db),如下所示: CREATE DATABASE db-name; - Qasim
请务必检查备份文件中是否包含“use'original_db'”。虽然我指定恢复到新的数据库“mysql new_db <dump.sql”,但是sql转储文件已经存在,并且它覆盖了我的实时数据库。不确定是否有一个选项强制它使用指定的DB并忽略sql文件中的“use'pround_db'” - Shaakir
@Joe,是的,如果'-p'和'password'之间有空格,则认为'password'是数据库名称。或者,您可以在没有密码的情况下键入“-p”,然后在按Enter键时会提示您输入密码。 - NotJay


常用的 mysqldump的 用于备份整个数据库:

shell> mysqldump db_name > backup-file.sql

您可以将转储文件加载回服务器,如下所示:

UNIX

shell> mysql db_name < backup-file.sql

同样的 视窗 命令提示符:

mysql -p -u [user] [database] < backup-file.sql

电源外壳

C:\> cmd.exe /c "mysql -u root -p db_name < backup-file.sql"

MySQL命令行

mysql> use db_name;
mysql> source backup-file.sql;

526
2017-07-16 00:48



@Mike你想要推出它吗? mysql> 命令行?你应该使用shell代替。 - vladkras
我如何使用Shell?我在Windows Server 2008上使用mysql5.6 - Jaylen
使用Windows PowerShell键入MySQL db_name <file.sql我收到以下错误,'<'运算符保留未来使用 - Jaylen
成龙  建议  & cmd.exe /c "mysql -u root -p Tutorials < tut_backup.sql" - vladkras
注意使用>将mysqldump输出重定向到文件,特别是如果你想控制编码。相反,您可能希望使用--result-file参数,以便编码不受shell / OS控制。 - Bernard Chen


关于导入大文件所花费的时间:最重要的是,由于MySQL的默认设置,它需要更多时间 autocommit = true。您必须在导入文件之前将其设置为关闭,然后检查导入如何像gem一样工作。

你只需要做以下事情:

mysql> use db_name;

mysql> SET autocommit=0 ; source the_sql_file.sql ; COMMIT ;

215
2018-04-04 06:47



有没有办法在用于导入的mysql命令的单个命令行中执行此操作? - Volomike
最佳答案inho。是的 source 命令我忘记了。我们大多数人都希望在我们这样做时这样做 是 在其他命令中以独立命令登录,而不是google serps顶部的标准login> inject> logout oneliner。 - davidkonrad
我同意这是 最好的答案。该 autocommit=0 部分在速度方面造成了不同的世界。 - aexl
会的 autocommit=0 将在更大的文件上工作?像8gb的sql文件。 - newbie
并不总是需要关闭 autocommit。值得在编辑器中检查数据库转储,它可能已经开始了 SET autocommit=0;。 - hashchange


在所有答案中,对于上述问题,这是最好的答案:

 mysql> use db_name;
 mysql> source file_name.sql;

70
2017-08-18 12:12





我们可以使用此命令从命令行导入SQL:

mysql -u username -p password db_name < file.sql

例如,如果用户名是 root 和密码是 password。你有一个数据库名称 bank 而SQL文件是 bank.sql。然后,只需这样做:

mysql -u root -p password bank < bank.sql

记住SQL文件的位置。如果你的SQL文件在 Desktop 文件夹/目录然后转到桌面目录并输入如下命令:

~ ? cd Desktop
~/Desktop ? mysql -u root -p password bank < bank.sql

如果你在 Project 目录和你的SQL文件在 Desktop 目录。如果你想从中访问它 Project 目录然后你可以这样做:

~/Project ? mysql -u root -p password bank < ~/Desktop/bank.sql

49
2018-03-11 11:26



两者之间不应该有空格 -p 和 password - Ejaz
日本鬼子。这不行。正确的是 mysql -u root -p"password" bank < bank.sql - Armin
为什么你根本无法一行回答? mysql -u username -ppassword db_name < file.sql - Naveed
虽然这与这个问题/答案完全无关,但当您使用非平凡的数据库时,不希望以明文形式在同一命令中输入密码。不指定密码作为命令的一部分将提示您输入可以安全输入的密码 - asgs


  1. 打开MySQL命令行
  2. 输入mysql bin目录的路径,然后按 输入
  3. 将您的SQL文件粘贴到 bin mysql服务器的文件夹。
  4. 在MySQL中创建一个数据库。
  5. 使用要导入SQL文件的特定数据库。
  6. 类型 source databasefilename.sql 和 输入
  7. 您的SQL文件上传成功。

44
2018-01-02 15:58



ype你的mysql bin目录的路径,然后按 - Ramesh Pareek


如果您已有数据库,请使用以下内容导入 dump 或者 sql 文件

mysql -u username -p database_name < file.sql

如果你不需要在MySQL中创建相关的数据库(空),那么首先登录到 MySQL 通过在终端或cmd中运行以下命令来控制台

mysql -u userName -p;

并在提示时提供密码。

接下来创建一个数据库并使用它

mysql>create database yourDatabaseName;
mysql>use yourDatabaseName;

然后导入 sql 或者 dump 文件到数据库

mysql> source pathToYourSQLFile;

注意:如果您的终端不在所在的位置 dump 要么 sql 文件存在,使用上面的相对路径。


37
2017-09-01 10:21