我试图直接将一个gzipped的SQL文件导入到mysql中。 这是正确的吗?
mysql -uroot -ppassword mydb > myfile.sql.gz
zcat /path/to/file.sql.gz | mysql -u 'root' -p your_database
>
将stdout
上的mysql
命令的stdout
写入文件myfile.sql.gz
,这很可能不是你想要的。 另外,这个命令会提示你inputMySQL用户“root”的密码。
要在导入sql.gz文件时显示进度条,请下载pv
并使用以下命令:
pv mydump.sql.gz | gunzip | mysql -u root -p
在CentOS / RHEL中,您可以使用yum install pv
。
在Debian / Ubuntu中apt-get install pv
。
在MAC中, brew install pv
最简单的方法是在导入之前解压缩数据库文件。 也正如@Prof所述。 Moriarty你不应该在命令中指定密码(你会被要求input密码)。 这个来自webcheatsheet的命令将一次性解压并导入数据库:
gunzip < myfile.sql.gz | mysql -u root -p mydb
如果你从zcat
得到一个错误,其中的错误信息包含带有额外的后缀.Z
的文件名,那么请尝试使用gzcat
,如https://stackoverflow.com/questions/296717/zcat-wont-unzip -files-正确
同时检查SQL文件中是否有任何USE语句。 如果在SQL文件中指定了不同的目标,则在命令行指定数据库并不能保证数据在那里结束。
在OSX上,我使用了这个:
zcat < [Database].sql.gz | mysql -u root -p [Database Name in MySQL]
input你的密码,瞧!