如何将sql.gz文件导入到MySQL中

13

我已经将生产服务器上几乎所有的空间都分配给了表空间

现在我有一个大约20GB的压缩转储文件需要转储到mysql

问题是服务器没有足够的空间来解压缩该文件(需要约120GB)

我尝试使用下面的命令,但失败了,因为它首先要解压缩该文件,然后才将输出重定向到mysql

 gunzip dbdump.sql.gz | mysql -u root -proot123 -S /home/mysql55/tmp/mysql.sock 

有没有办法在不解压缩的情况下倒出压缩文件?

非常感谢任何建议。

6个回答

17

你应该告诉gunzip输出到标准输出。你现在正在做的不会管道任何输出。

gunzip -c dbdump.sql.gz | mysql (args...)

谢谢,它运行得很好。是否有类似的方法来处理sql.tar.gz文件? - vidyadhar
我从未遇到过 sql.tar.gz 文件,但如果你的意思是一个包含 sql 文件的 tar.gz 文件,那么命令应该是 tar -zvxOf somefile.tar.gz path/to/sql/file | mysql ... - Andrew Mao
为什么要使用 path/to/sql/file?我只是用 tar -zvxOf dump.tgz|mysql database -u ... 导入了我的文件。 - rubo77
我以为他在谈论一个包含某个地方的sql文件的tar.gz文件。你的文件只是一个普通的gzipped sql文件,所以你也可以使用gunzip命令。 - Andrew Mao

5

我知道这听起来很荒谬,但它被压缩了两次,所以:

  1. 解压缩 filename.sql.gz
  2. 将解压后的文件从 filename.sql 重命名为 filename.gz
  3. 再次解压缩

希望这样能行。


3
我们也可以使用以下命令来实现相同的效果。这里我使用了gzip。
gzip -d < dbdump.sql.gz | mysql (args..)

另一种方法如下所示:
gzip -c dbdump.sql.gz | mysql (args..)

1
你可以使用这个来导入。
zcat dbdump.sql.gz | mysql -u username -p dbname

0
您可以尝试在运行时解压缩文件,例如:
$ cat dbdump.sql.gz | gzip -cd | mysql

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接