mysql -uroot -ppassword mydb > myfile.sql.gz
#1 楼
zcat /path/to/file.sql.gz | mysql -u 'root' -p your_database
将在>
上写入mysql
命令的输出到文件stdout
中,这很可能不是您想要的。另外,此命令将提示您输入MySQL用户“ root”的密码。评论
作为一种良好的安全措施,我将密码放在命令行上,让mysql要求它。
–莫里亚蒂教授
2010年5月3日,8:19
甚至更好:使用凭据创建〜/ .my.cnf。 ;)
– joschi
2010年5月3日,10:46
作为@教授。 Moriarty说明,您可以通过zcat /path/to/file.sql.gz修改命令以不使用密码。 mysql -u'root'-p your_database。它将知道最后一个参数是您要使用的数据库,而不是密码。
–bafromca
15年1月20日,0:20
为了稍微纠正@ Prof.Moriarty的评论,一个好的安全实践是不要将我的密码放在命令行上(该密码将被存储在历史记录中,或者在您的肩膀上看到),然后让MySQL要求。单独的-p标志将导致MySQL在提示时询问密码。
–乔治
16年8月3日在8:00
+1使该死的数据库转储处于压缩状态
– Dmitri DB
17年1月12日在19:18
#2 楼
要在导入sql.gz文件时显示进度条,请下载pv
并使用以下命令:pv mydump.sql.gz | gunzip | mysql -u root -p <database name>
在CentOS / RHEL中,您可以使用
yum install pv
安装pv。 br /> 在Debian / Ubuntu中
apt-get install pv
。在MAC中,
brew install pv
评论
pv似乎也存在于Ubuntu仓库中(至少在12.04 LTS中是),但是再次需要执行sudo apt-get install pv来获取它。感谢Banjer,这非常适合大型数据库导入!
–toon81
2015年2月19日15:25
我必须运行pv mydump.sql.gz |拉链| mysql -u root my_database_name。那是因为我正在导入表,而我没有为root用户设置密码
–克里斯蒂亚诺·门多萨(CristianoMendonça)
16-2-9在22:19
在MAC中,brew install pv
–分数
16年4月28日在19:30
#3 楼
最简单的方法是在导入之前解压缩数据库文件。也如@Prof所述。 Moriarty,您不应该在命令中指定密码(系统会要求您输入密码)。从webcheatsheet获取的此命令将一次性解压缩并导入数据库:gunzip < myfile.sql.gz | mysql -u root -p mydb
评论
另外,需要在导入之前创建mydb。这不会为您创建数据库。
–悉达多
2015年4月20日23:00
我发现10 GB压缩文件上的管道Gunzip导致导入冻结。不知道这是否是由于内存限制或其他原因,但我将来会一次尝试一步。
–ryantuck
16年1月7日在16:42
@RyanTuck推动了这类过程的极限:)
–icc97
16年1月7日在19:37
@Siddhartha这取决于sql转储文件。有时它们包括创建数据库语句。
–rooby
17年8月30日在22:55
@rooby很有道理。
–悉达多
17年9月1日在0:41
#4 楼
如果从zcat
收到错误消息,其中错误消息包含带有额外后缀.Z
的文件名,请尝试改用gzcat
,如https://stackoverflow.com/questions/296717/zcat-wont-unzip-正确的文件#5 楼
在macOS上,我使用了以下命令:zcat < [Database].sql.gz | mysql -u root -p [Database Name in MySQL]
输入密码,瞧!
#6 楼
还要检查SQL文件中是否有任何USE语句。如果在SQL文件中指定了另一个目标,则在命令行中指定数据库并不能保证数据会在那里结束。评论
您只需要像这样扩展命令:pv mydump.sql.gz |拉链| mysql -u root -p your_database。可接受的答案使用此方法。
–bafromca
2015年1月20日,0:17
#7 楼
对于bzip2压缩文件(.sql.bz2),请使用:bzcat <file> | mysql -u <user> -p <database>
OR
pv <file> | bunzip2 | mysql -u <user> -p <database>
来查看进度栏。
#8 楼
您可以使用-c, --stdout, --to-stdout
命令的gunzip
选项,例如:
gunzip -c file.sql.gz | mysql -u root -p database
#9 楼
要在.sql.qz中导出,命令是:-mysqldump -u username -p database | gzip> database.sql.gz
要导入.sql.qz文件的命令是:-
gunzip
Shailesh Thapa
#10 楼
假设您需要使用mysql填充user_data,请尝试以下操作:export DEBIAN_FRONTEND=noninteractive \
apt-get update -yq
dpkg -l | grep mysql-server || (echo "Installing MySQL..." \
&& apt-get install -yq mysql-server \
&& echo -e "\n[mysqld]\nbind-address=0.0.0.0\nskip-name-resolve=1" | tee -a /etc/mysql/my.cnf \
&& aws s3 cp --quiet s3://your-bucket/mysqldump_all_databases.sql.gz - | zcat | mysql -uroot\
&& systemctl restart mysql)
#11 楼
在MacOS上,除MySQL客户端本身外,我一直使用以下代码,无需安装其他程序。$ cat /path/to/file.sql.gz | gzip -d | mysql -u root <db_name>
第一个命令
cat
,打印文件。其输出(文件内容)作为输入发送到下一个命令gzip
。带有gzip
选项的-d
解压缩传递给它的输入并输出结果,该结果最终用作MySQL客户端mysql
程序的输入。输出->输入发送是由bash和其他shell上的|
(管道)运算符提供给我们的。此脚本还可以在某些流行的Linux发行版中使用,例如Ubuntu。我不确定
gzip
是否始终可用。但是,如果没有安装,则可以轻松安装:$ sudo apt install gzip
评论
即使忽略问题的gzip面,您的箭头也指向错误的方向...