我该怎么做才能使它工作?
#!/bin/bash
TABLENAMES="user_stats"
ssh -t railsapps@xxx.xxx.xxx.xx -p xxx bash -c "'
for TABLENAME in $TABLENAMES
do
psql -d mydb -P format=unaligned -P tuples_only -P fieldsep=, -c "SELECT * FROM $TABLENAME" > /tmp/$TABLENAME
done
'"
一般问题:如何定期转储数据库表从psql数据库在一个单一的bash脚本在Mac OS X上运行到本地机器?
首先,应该远程测试SQL和bash脚本(以交互方式执行SSH)。
我认为你的问题是由引号/双引号的错误组合引起的。我认为星(*)
和$TABLENAME
是在SSH调用之前被消耗的,所以太早了。试着在$
符号前加一个反斜杠。
您应该使用verbose或debug选项,以帮助理解实际执行的内容:
ssh -t railsapps@xxx.xxx.xxx.xx -p xxx bash -vxc "'
for TABLENAME in $TABLENAMES; do
psql -d mydb -P format=unaligned -P tuples_only -P fieldsep=, -c "SELECT * FROM $TABLENAME" > /tmp/$TABLENAME
done
'"