我想尝试从 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 的内容。在这种情况下,|
它会按预期工作。