我已经编写了一个c-shell脚本来连接到数据库。这已经可以很好地工作了,现在我想调用一个sql脚本来读取和打印cetrain表中的所有值。到目前为止,我的脚本是这样的
#!/bin/csh
set MYSQL=${MYSQL_HOME}/mysql
${MYSQL} ${CLEDBUSER}其中,CLEDBUSER设置为环境变量,如so - CLEADBUSER=-uusername -ppassword -Ddatabasename
我能够运行脚本并连接到数据库。当我运行他的脚本时,它会给我一个等待下一个命令的msql代码。因此,我在脚本中添加了一个变量,其中包含用于查询数据库的(SELECT)语句。现在我的脚本如下所示
#!/bin/csh
set MYSQL=${MYSQL_HOME}/mysql
set SELECTER="SELECT * FROM TB_EARTH_UI;"
${MYSQL} ${CLEDBUSER} ${SELECTER} 问题是它没有返回所有的行和列,但它返回了mysql中可用命令的列表,提示和默认选项,以及变量和布尔选项。为什么我的SELECT语句没有被读取?
发布于 2012-06-28 01:50:31
SQL (mysql)期望在其标准输入(例如,当从外壳调用时使用键盘)上有MySQL指令。
你可以这样做:编辑:请忽略,这是离题的
${MYSQL} ${CLEDBUSER} < text_file_of_sql_statements.sql或
${MYSQL} ${CLEDBUSER} << EOF
${SELECTER}
# you can add other litteral SQL statements here, or more variables containing SQL statements
EOF或
${MYSQL} ${CLEDBUSER} --execute="${SELECTER}"编辑
我完全误解了行动组的问题。我不知道他试图从一个变量执行SQL语句。我已经编辑了上面的选项(谢谢你outis)。下面是另一个变体:
echo ${SELECTER} | ${MYSQL} ${CLEDBUSER}此外,--skip-column-names选项可以使您更轻松地解析输出。
https://stackoverflow.com/questions/11231140
复制相似问题