获取列名称并将其写入文件

时间:2018-01-21 10:00:09

标签: mysql sql bash

大家好我写了一个执行查询e的bash脚本并将结果打印到文件中但它不起作用

source ../db.config
msqlcmd="mysql -u $DB_USER -p$DB_PASS -s -B -q"
echo "USE INFORMATION_SCHEMA;\nSELECT * FROM COLUMNS" | $mysqlcmd > ../tmpsql/columns.txt

在db.config中有用于访问db

的凭据

3 个答案:

答案 0 :(得分:1)

不要将命令放在变量中,因为[ this ]可以很好地总结。

[ heredoc ]是你的朋友。

mysql -u "$db_user" -p "$db_pass" -s -B -q <<-EOF > ../tmpsql/columns.txt
USE INFORMATION_SCHEMA;
SELECT * FROM COLUMNS;
EOF

所有好: - )

注意:不要对用户定义的变量使用像$DB_USER这样的完整大写标识符,因为它可能与内置shell变量冲突。双引号变量也是一种标准做法。

答案 1 :(得分:1)

尝试以下代码:

source ../db.config
echo -e "USE INFORMATION_SCHEMA;\nSELECT * FROM COLUMNS" | mysql -u $DB_USER -p$DB_PASS -s -B -q > ../tmpsql/columns.txt

答案 2 :(得分:1)

您不需要重新发明轮子来获取mysql登录凭据。使用mysql_config_editor存储您在〜/ .mylogin.cnf中加密的凭据,然后您可以通过一个简单的单行代码完成整个事务,例如

mysql -s -B -q -e "select * from information_schema.columns" | tee ./tmpsql/columns.txt