如何将 stdin 导入到 mysql 参数中

如何将 stdin 导入到 mysql 参数中

我想尝试从 SQL 文件导入数据库。我想--defaults-extra-file通过回显配置文件为参数提供参数,并将输出通过管道传输到命令。

此命令:

echo -e "[client]\nuser=user\npassword='mypass'\nhost=10.20.30.14\n" | mysql --defaults-extra-file=/dev/stdin db-1 < db-2.sql

返回此错误:

mysql: [ERROR] Found option without preceding group in config file /dev/stdin at line 1.
mysql: [ERROR] Fatal error in defaults handling. Program aborted!

但我确实定义了它的组。我试过这些组[client][mysql][mysqld]

我也尝试了该--defaults-file参数。


我对这个命令没有同样的问题mysqldump。下面的命令运行正常:

echo -e "[client]\nuser=user\npassword='mypass'\nhost=10.20.30.14\n" | mysqldump --defaults-file=/dev/stdin --add-drop-table db2 -N --column-statistics=0 > db-2.sql

答案1

mysql(或任何其他命令)无法通过其 stdin 读取两个单独的文件。stdin 是一个文件。您的第一个命令基本上是:

echo -e "…\n" | mysql … < db-2.sql

就像是:

echo foo | cat - < /etc/fstab

尝试一下。在设置 stdin 的来源方面<“获胜” 。|cat

您的第二个命令不包含<;它包含> db-2.sql重定向 stdout 的内容。在这种情况下,|它会按预期工作。

相关内容