Answers:
zcat /path/to/file.sql.gz | mysql -u 'root' -p your_database
>
会将mysql
命令的输出写到stdout
文件中myfile.sql.gz
,这很可能不是您想要的。另外,此命令将提示您输入MySQL用户“ root”的密码。
~/.my.cnf
使用凭据创建。;)
zcat /path/to/file.sql.gz | mysql -u 'root' -p your_database
。它将知道最后一个参数是您要使用的数据库,而不是密码。
要在导入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
pv
似乎也存在于Ubuntu仓库中(至少是在12.04 LTS中),但是再次需要做sudo apt-get install pv
才能得到它。感谢Banjer,这非常适合大型数据库导入!
brew install pv
最简单的方法是在导入之前解压缩数据库文件。也如@Prof所述。Moriarty,您不应该在命令中指定密码(系统会要求您输入密码)。从webcheatsheet获取的此命令将一次性解压缩并导入数据库:
gunzip < myfile.sql.gz | mysql -u root -p mydb
gunzip
在10GB压缩文件上的管道导致导入冻结。不知道这是由于内存限制还是其他原因,但是我将来会每次只做一步。
如果您从中收到错误zcat
,错误消息中包含带有额外后缀的文件名.Z
,请尝试使用gzcat
代替,如https://stackoverflow.com/questions/296717/zcat-wont-unzip-files-properly中所述
还要检查SQL文件中是否有任何USE语句。如果在SQL文件中指定了其他目标,则在命令行中指定数据库并不能保证数据会在那里结束。
pv mydump.sql.gz | gunzip | mysql -u root -p
your_database
。可接受的答案使用此方法。
对于bzip2压缩文件(.sql.bz2),请使用:
bzcat <file> | mysql -u <user> -p <database>
要么
pv <file> | bunzip2 | mysql -u <user> -p <database>
查看进度条。
您可以使用命令-c, --stdout, --to-stdout
选项gunzip
例如:
gunzip -c file.sql.gz | mysql -u root -p database