在 shell 脚本中,在 MySQL 命令行中将 table 名称作为参数传递
Pass as argument a table name in a MySQL command line, in a shell script
我想在 shell 脚本的 Mysql 命令行中将 table 名称作为参数传递 这是我的小 shell 脚本:
if [ "" != "" ]; then
mysql \
--user=genome \
--host=genome-mysql.cse.ucsc.edu \
-A -D hg38 \
-e 'desc' "" \
-B -N \
| awk 'BEGIN {ORS="\t"};{print }' | awk '{print "#"[=13=]}'
else
echo "Error."
fi
所以当我尝试 运行 我的脚本时:
bash Script.sh tablename
它 return 出现以下错误:
ERROR 1049 (42000): Unknown database 'tablename'
所以,有几件事供您自己参考:
我可以访问数据库。
我直接在table中执行命令时数据库中存在tabletable
我尝试使用 "desc "、'desc ""'、'desc "" '... 总是 return 错误(错误 1049 或 1064)。
命令行后面的 awk 不是问题的根源。
我也在 Python 2.7 中尝试了子进程,它给出了完全相同的错误:
错误 1049 (42000):未知数据库 'tablename'
我试图在网上找到一些帮助,也许,MySQL 似乎不允许将 table 名称作为参数传递。
由于我有多个 table 需要迭代,我别无选择。
预先感谢您的帮助。
-e
的参数必须是单个字符串。您将 table 名称作为与 desc
分开的参数,因此它被视为数据库名称参数。将其更改为:
-e "desc "
这是我的整个脚本:
#!/bin/bash
if [ "" != "" ]; then
mysql \
-A -D bbodb_test \
-e "desc " \
-B -N \
| awk 'BEGIN {ORS="\t"};{print }' | awk '{print "#"[=11=]}'
else
echo "Error."
fi
那我运行:
./scriptname t_users
其中 t_users
是我的 table 之一的名字。
我省略了 --user
和 --host
参数,因为它们是从我的 ~/.my.cnf
文件中获取的,但我认为这不会有什么不同。
我想在 shell 脚本的 Mysql 命令行中将 table 名称作为参数传递 这是我的小 shell 脚本:
if [ "" != "" ]; then
mysql \
--user=genome \
--host=genome-mysql.cse.ucsc.edu \
-A -D hg38 \
-e 'desc' "" \
-B -N \
| awk 'BEGIN {ORS="\t"};{print }' | awk '{print "#"[=13=]}'
else
echo "Error."
fi
所以当我尝试 运行 我的脚本时:
bash Script.sh tablename
它 return 出现以下错误:
ERROR 1049 (42000): Unknown database 'tablename'
所以,有几件事供您自己参考:
我可以访问数据库。
我直接在table中执行命令时数据库中存在tabletable
我尝试使用 "desc "、'desc ""'、'desc "" '... 总是 return 错误(错误 1049 或 1064)。
命令行后面的 awk 不是问题的根源。
我也在 Python 2.7 中尝试了子进程,它给出了完全相同的错误:
错误 1049 (42000):未知数据库 'tablename'
我试图在网上找到一些帮助,也许,MySQL 似乎不允许将 table 名称作为参数传递。
由于我有多个 table 需要迭代,我别无选择。
预先感谢您的帮助。
-e
的参数必须是单个字符串。您将 table 名称作为与 desc
分开的参数,因此它被视为数据库名称参数。将其更改为:
-e "desc "
这是我的整个脚本:
#!/bin/bash
if [ "" != "" ]; then
mysql \
-A -D bbodb_test \
-e "desc " \
-B -N \
| awk 'BEGIN {ORS="\t"};{print }' | awk '{print "#"[=11=]}'
else
echo "Error."
fi
那我运行:
./scriptname t_users
其中 t_users
是我的 table 之一的名字。
我省略了 --user
和 --host
参数,因为它们是从我的 ~/.my.cnf
文件中获取的,但我认为这不会有什么不同。