题 如何将sql.gz文件加载到我的数据库? (输入)


我正在尝试将gzip压缩的SQL文件直接导入到mysql中。这是正确的方法吗?

mysql -uroot -ppassword mydb > myfile.sql.gz

118
2018-05-03 07:06




即使忽略了问题的gzip方面,你的箭头也指向错误的方向...... - Matt Fletcher


答案:


zcat /path/to/file.sql.gz | mysql -u 'root' -p your_database

> 会写出的输出 mysql 命令 stdout 进入文件 myfile.sql.gz 这很可能不是你想要的。此外,此命令将提示您输入MySQL用户“root”的密码。


186
2018-05-03 07:10



作为一个很好的安全实践,我会把我的密码放在命令行上,我会让mysql请求它。 - Prof. Moriarty
甚至更好:创造 ~/.my.cnf 凭证。 ;) - joschi
作为@Prof。 Moriarty解释说,您可以通过修改命令来不使用密码 zcat /path/to/file.sql.gz | mysql -u 'root' -p your_database。它会知道最后一个参数是您要使用的数据库,而不是您的密码。 - bafromca
为了略微纠正@Prof.Moriarty的评论,一个良好的安全实践将是 不 把我的密码放在命令行上(它将存储在历史记录中,或者在你的肩膀上看到),让MySQL要求它。仅-p标志将导致MySQL在提示时询问密码。 - George
+1用于使该死的数据库转储压缩的内容 - Dmitri DB


要在导入sql.gz文件时显示进度条,请下载 pv 并使用以下内容:

pv mydump.sql.gz | gunzip | mysql -u root -p

在CentOS / RHEL中,您可以安装pv yum install pv

在Debian / Ubuntu中 apt-get install pv

在MAC中, brew install pv


66
2017-11-03 19:46



pv 似乎也在Ubuntu回购中(至少在12.04 LTS中),但你需要再次做 sudo apt-get install pv 为拿到它,为实现它。谢谢Banjer,这是大数据库导入的完美之选! - toon81
我不得不运行pv mydump.sql.gz | gunzip | mysql -u root my_database_name。那是因为我正在导入表格而我没有为root用户设置密码 - Cristiano Mendonça
在MAC中, brew install pv - score


最简单的方法是在导入之前解压缩数据库文件。也如提到的那样 @Prof。莫里亚蒂 您不应该在命令中指定密码(系统会要求您输入密码)。这个命令取自 webcheatsheet 将一次解压缩并导入数据库:

gunzip < myfile.sql.gz | mysql -u root -p mydb

47
2017-11-22 15:51



此外,需要在导入之前创建mydb。这不会为您创建数据库。 - Siddhartha
我发现了我的管道 gunzip 在10GB压缩文件上导致我的导入冻结。不确定这是由于内存限制还是其他原因,但我在将来一次做一步时会犯错。 - Ryan Tuck
@RyanTuck这是推动这些过程的极限:) - icc97
@Siddhartha这取决于sql转储文件。有时它们包括create database语句。 - rooby
@rooby是有道理的。 - Siddhartha


如果你收到错误 zcat,其中错误消息包含带有额外后缀的文件名 .Z,然后尝试使用 gzcat 相反,正如所述 https://stackoverflow.com/questions/296717/zcat-wont-unzip-files-properly


10
2017-07-08 13:59





还要检查SQL文件中是否有任何USE语句。如果在SQL文件中指定了不同的目标,则在命令行指定数据库并不能保证数据在那里结束。


3
2018-05-03 11:28



你只需要像这样扩展命令: pv mydump.sql.gz | gunzip | mysql -u root -p  your_database。接受的答案使用这种方法。 - bafromca


在macOS上,我使用了这个:

zcat < [Database].sql.gz | mysql -u root -p [Database Name in MySQL]

输入你的密码,瞧!


3
2017-11-28 07:41





对于 bzip2的 压缩文件(.sql.bz2),使用:

bzcat <file> | mysql -u <user> -p <database>

要么

pv <file> | bunzip2 | mysql -u <user> -p <database>

看进度条吧。


1
2017-08-01 15:25





您可以使用 -c, --stdout, --to-stdout 的选择 gunzip 命令

例如:

gunzip -c file.sql.gz | mysql -u root -p database

0
2017-09-16 06:03