ChatGPT解决这个技术问题 Extra ChatGPT

如何从 mysqldump 恢复转储文件?

我得到了一个 MySQL 数据库文件,我需要将其还原为我的 Windows Server 2008 机器上的数据库。

我尝试使用 MySQL Administrator,但出现以下错误:

选择的文件是由 mysqldump 生成的,不能被这个应用程序恢复。

我如何让这个工作?

好问题,感谢您在我之前提出这个问题,赞成!最终选择了一个不被接受的解决方案,效果很好,但每种方法都很好。干杯。

S
Stevi Deter

如果要恢复的数据库尚不存在,则需要先创建它。

在命令行上,如果您位于包含转储文件的同一目录中,请使用以下命令(带有适当的替换):

C:\> mysql -u root -p

mysql> create database mydb;
mysql> use mydb;
mysql> source db_backup.dump;

我个人喜欢这种方法。它显示了转储的进度以及不同的 sql 所花费的时间。
@Phrogz 实际上,您可以在没有空格的情况下使用 mysql -u root -psecret 在命令行上提供密码,但缺点是您的密码以明文形式显示在进程列表和日志文件中。正如您所建议的,最好使用空的 -p 并在提示中键入它。
此方法的好处是允许设置基于会话的变量(例如 FOREIGN_KEY_CHECKS),而无需编辑转储文件
手动执行此类操作时,这一切都很好,但不适用于 bash 脚本。
一个缺点:它无法加载 gzipped 转储(例如使用 mysqldump db | gzip -9 > dumpfile.sql.gz 生成)
D
Dave Liepmann

它应该像运行这个一样简单:

mysql -u <user> -p < db_backup.dump

如果转储是单个数据库,您可能必须在文件顶部添加一行:

USE <database-name-here>;

如果它是许多数据库的转储,则 use 语句已经存在。

要运行这些命令,请打开命令提示符(在 Windows 中)和 cdmysql.exe 可执行文件所在的目录(您可能需要四处寻找它,这取决于您安装 mysql 的方式,即独立或作为 WAMP 等软件包的一部分)。进入该目录后,您应该可以像上面那样键入命令。


我是否使用“MySQL 命令行客户端”?我以前从未使用过 MySQL。
在文本编辑器中打开转储文件,它很容易挑选,如果有任何“使用”语句,那么它是多个数据库,如果没有,你必须在顶部添加一个才可以运行该命令。
当然,您放入“using”语句的数据库必须首先存在。
看vogs的回答。语法是 mysql -u<user> -p mydatabasename < db_backup.dump 文件开头不需要 USE 语句
“在文本编辑器中打开转储文件”的建议似乎很奇怪。这可能适用于小型数据库或像 EditPad 这样的缓冲文本编辑器,但其他一切都会窒息。如果您不必采取这一步,那就太好了。
d
dur

你只需要运行这个:

mysql -p -u[user] [database] < db_backup.dump

如果转储包含多个数据库,则应省略数据库名称:

mysql -p -u[user] < db_backup.dump

要运行这些命令,请打开命令提示符(在 Windows 中)和 cdmysql.exe 可执行文件所在的目录(您可能需要四处寻找它,这取决于您安装 mysql 的方式,即独立或作为 WAMP 等软件包的一部分)。进入该目录后,您应该只需键入命令即可。


w
womd
mysql -u username -p -h localhost DATA-BASE-NAME < data.sql

here - step 3:这样你就不需要 USE 语句


p
pdc

当我们使用 mysqldump 创建转储文件时,它包含一个用于重新创建数据库内容的大型 SQL 脚本。所以我们通过启动 MySQL 的命令行客户端来恢复它:

mysql -uroot -p 

(其中 root 是我们的 MySQL 管理员用户名),一旦连接到数据库,我们需要命令来创建数据库并将文件读入其中:

create database new_db;
use new_db;
\. dumpfile.sql

详细信息将根据创建转储文件时使用的选项而有所不同。


J
Javeed Shakeel

运行命令进入数据库

 # mysql -u root -p 

输入用户的密码然后创建一个新数据库

mysql> create database MynewDB;
mysql> exit

并使 exit.Afetr that.Run 这个命令

# mysql -u root -p  MynewDB < MynewDB.sql

然后进入数据库并输入

mysql> show databases;
mysql> use MynewDB;
mysql> show tables;
mysql> exit

就是这样............您的转储将从一个数据库恢复到另一个数据库

否则有转储恢复的替代方法

# mysql -u root -p 

然后进入数据库并输入

mysql> create database MynewDB;
mysql> show databases;
mysql> use MynewDB;
mysql> source MynewDB.sql;
mysql> show tables;
mysql> exit

H
Hengjie

如果您想查看转储的进度,请尝试以下操作:

pv -i 1 -p -t -e /path/to/sql/dump | mysql -u USERNAME -p DATABASE_NAME

您当然需要安装“pv”。此命令仅适用于 *nix。


Z
Zack Peterson

我按照这些步骤让它工作......

打开 MySQL Administrator 并连接到服务器 选择左侧的“Catalogs” 右键单击左下角的框并选择“Create New Schema” MySQL Administrator http://img204.imageshack.us/img204/7528/adminsx9.th.gif放大图片 命名新模式(例如:“dbn”) MySQL 新模式 http://img262.imageshack.us/img262/4374/newwa4.th.gif 放大图片 打开 Windows 命令提示符 (cmd) Windows 命令提示符 http:/ /img206.imageshack.us/img206/941/startef7.th.gif 放大图片 将目录更改为 MySQL 安装文件夹 执行命令:mysql -u root -p dbn < C:\dbn_20080912.dump ...其中“root”是用户,“dbn”是数据库名称,“C:\dbn_20080912.dump”是 mysqldump .dump 文件的路径/文件名 MySQL dump restore 命令行 http://img388.imageshack.us/img388/2489/ cmdjx0.th.gif 放大图片 享受吧!


M
Michael

作为先前答案的具体示例:

我需要恢复备份,以便将其导入/迁移到 SQL Server。我只安装了 MySql,但没有将其注册为服务或将其添加到我的路径中,因为我不需要让它保持运行。

我使用 Windows 资源管理器将转储文件放在 C:\code\dump.sql 中。然后从开始菜单项打开 MySql。创建了数据库,然后使用完整路径运行源命令,如下所示:

mysql> create database temp
mysql> use temp
mysql> source c:\code\dump.sql

A
Ashwin A

您可以尝试SQLyog“执行 SQL 脚本”工具来导入 sql/dump 文件。

https://i.stack.imgur.com/i2zon.png


J
Jerome_B

使用在 Linux 上创建的 200MB 转储文件在带有 mysql 5.5 的 Windows 上恢复,我在

source file.sql

从 mysql 提示符的方法比使用

mysql  < file.sql

命令行上的方法,这导致了一些错误 2006“服务器已消失”(在 Windows 上)

奇怪的是,在(mysql)安装期间创建的服务引用了一个不存在的 my.ini 文件。我将“大”示例文件复制到 my.ini 中,我已经根据建议的增加对其进行了修改。

我的价值观是

[mysqld]
max_allowed_packet = 64M
interactive_timeout = 250
wait_timeout = 250

v
vkrishna17
./mysql -u <username> -p <password> -h <host-name like localhost> <database-name> < db_dump-file

这与其他几个答案相同,这是一个八年前的问题。
虽然选择的答案非常好,但这个答案实际上对我更有用。我的数据库文件很大,在 Notepad++ 中打开它是一场噩梦,它无法处理大小并且不允许我在 sql 文件的顶部添加数据库名称。在这种情况下,能够从命令行指定数据库名称实际上更有帮助。
mysql 命令不接受选项及其参数之间的空格。它必须改为 -u<username>,并且根本不应该在命令行上提供密码。
佚名

如果备份/转储不是从那里创建的,则不能使用 MySQL Admin 中的恢复菜单。不过值得一试。如果您选择使用复选框“忽略错误”,它会说它已成功完成,尽管它显然退出时只导入了一小部分行......请注意,这是一个转储。


J
Jossef Harush Kadouri

mysqldump 恢复生成的 SQL 的单行命令

mysql -u <username> -p<password> -e "source <path to sql file>;"

例如mysql -u root -p12345678 -e "source /tmp/backup.sql;"
不要像这样使用密码,只需使用 -p ,在您按下回车后,命令行会提示您一个安全的密码请求。
当您负担得起交互式提示时,您是正确的。当你不能(例如无人值守的脚本)时,你可能会内联使用它
S
Suragch

假设您已经创建了空白数据库,您还可以从命令行恢复数据库,如下所示:

mysql databasename < backup.sql

u
user26087

您还可以使用 MySQL Administrator 中的还原菜单。您只需打开备份文件,然后单击恢复按钮。


r
rɑːdʒɑ

如果您已经在 mysql 提示符内并假设您的转储文件 dump.sql,那么我们也可以使用如下命令来恢复转储

mysql> \. dump.sql

如果您的转储大小较大,请将 max_allowed_packet 值设置为较高。设置此值将帮助您更快地恢复转储。


您应该添加,在运行该命令之前,用户必须使用 USE DB_NAME 选择一个数据库来恢复数据
C
CTS_AE

如何使用 MySQLWorkbench 恢复 MySQL 数据库

您可以在查询选项卡中运行 drop 和 create 命令。

如果架构当前存在,则删除它

DROP DATABASE `your_db_name`;

创建新架构

CREATE SCHEMA `your_db_name`;

打开您的转储文件

https://i.stack.imgur.com/eUYHJ.png

单击在新查询选项卡中打开 SQL 脚本图标并选择您的数据库转储文件。然后单击 Run SQL Script... 然后它将让您预览 SQL 转储脚本的第一行。然后,您将选择默认模式名称 接下来选择默认字符集 utf8 通常是一个安全的选择,但您可以通过查看预览行中的字符集来辨别它。单击运行请耐心等待大型数据库还原脚本,并观察您的驱动器空间消失! 🎉