将c-shell变量设置为SELECT语句

时间:2012-06-27 16:42:03

标签: mysql

我编写了一个连接数据库的c-shell脚本。这已经很好了,我现在想调用一个sql脚本来读取和打印cetrain表中的所有值。截至目前,这是我的脚本看起来

的方式
#!/bin/csh 


set MYSQL=${MYSQL_HOME}/mysql
${MYSQL} ${CLEDBUSER}

其中CLEDBUSER被设置为这样的环境变量 - CLEADBUSER = -uusername -ppassword -Ddatabasename

我能够运行脚本并连接到数据库。当我吟唱他的脚本时,它给了我等待下一个命令的msql pront。所以我在脚本中添加了一个包含查询数据库的(SELECT)语句的变量。现在我的脚本看起来像这样

#!/bin/csh 


set MYSQL=${MYSQL_HOME}/mysql

set SELECTER="SELECT * FROM TB_EARTH_UI;"

${MYSQL} ${CLEDBUSER} ${SELECTER} 

问题是它没有返回我所有的行和columsn但是它返回了我在mysql promt和默认选项以及vairables和boolean选项中的可用命令列表。为什么我的SELECT语句没有被读取?

1 个答案:

答案 0 :(得分:1)

MySQL客户端(mysql)在其标准输入上需要SQL指令(例如,从shell调用时的键盘)。

你可以这样做:[编辑:请忽略,这个是偏离主题的]

${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}"

[编辑]

我完全误解了OP的问题。我没有得到它,他试图从变量执行SQL语句。我已经编辑了上面的选项(谢谢你)。这是另一种变化:

echo ${SELECTER} | ${MYSQL} ${CLEDBUSER}

此外,--skip-column-names选项可以让您更轻松地解析输出。