您通常会像这样保存 Linux 命令的详细输出:
# command > output.txt
但是当您使用类似的命令时mysqldump
,该>
选项会将数据库表的转储输出到所需的文件:
# mysqldump --username=whatever --password=whatever -h localhost database > dump.sql
如果您在 中添加-v
(verbose) 选项mysqldump
,它会输出有关命令正在执行的操作的帮助信息。>
由于该选项用于将数据库表信息输出到文件,如何将此详细输出保存到文件中?
更具体地说,我将一个数据库的输出转储到另一个数据库中,如下所示:
mysqldump -alv -h 123.123.123.123 --user=username --password=p@ssw0rd --add-drop-table databasename | mysql --user=username --password=p@ssw0rd -h localhost localdatabase
我尝试了以下但最终输出文件为空
mysqldump -alv -h 123.123.123.123 --user=username --password=p@ssw0rd --add-drop-table 数据库名 | mysql --user=username --password=p@ssw0rd -h localhost localdatabase > output.log
还尝试了以下操作,但它将数据库信息重定向到 output.log 而不是目标数据库:
mysqldump -alv -h 123.123.123.123 --user=username --password=p@ssw0rd --add-drop-table databasename > output.log | mysql --user=username --password=p@ssw0rd -h localhost localdatabase
而且我看不到任何一种--log-file=FILE
选择mysqldump
。
您的第一个 mysqldump 制作表结构和 INSERT 并将其放入 dump.sql 中。
您的第二个转储是一个远程转储,它直接通过管道传输到 localhost 中的 mysql。
如果您尝试根据错误捕获任何输出,请尝试以下操作:
Using
2>
将捕获任何基于错误的输出(又名 stderr)。mysqldump 仍应将正常的控制台输出(又名 stdout)通过管道传输到另一个 mysql 会话并按预期加载数据。示例:我的 PC 上有一个名为 sample 的小型数据库。
我跑了这个:
试试看 !!!
mysqldump -v 输出到 stderr 流,所以你只需要重定向它
例子