我在脚本中使用 FreeTDS 将记录插入 MSSQL 数据库。这USE
andINSERT
命令有效,但是exit
命令没有,它挂起。我尝试过重定向stdout
butcat
抱怨。我想我会用Expect http://www.nist.gov/mel/msid/expect.cfm否则。嗯。谢谢。
echo -e "USE db\nGO\nINSERT INTO db_table (id, data, meta)\nVALUES (1, 'data', 'meta')\nGO\nexit" > tempfile
cat tempfile - | tsql -H 10.10.10.10 -p 1433 -U user -P pass
Did you mean to do this: cat tempfile -
? It means that it will wait for you to press Ctrl+D, because it is trying to read from standard input as well.
如果没有,请删除-
.
另外,正如 Ignacio 建议的那样,您可以将其编写为更清晰的定界符:
tsql -H 10.10.10.10 -p 1433 -U user -P pass <<EOF
USE db
GO
INSERT INTO db_table (id, data, meta)
VALUES (1, 'data', 'meta')
GO
exit
EOF
或者只是用文字换行符进行回显而不是\n
:
echo "
USE db
GO
INSERT INTO db_table (id, data, meta)
VALUES (1, 'data', 'meta')
GO
exit
" > tempfile
然后使用标准输入重定向来运行它(<
) 像这样:
tsql -H 10.10.10.10 -p 1433 -U user -P pass < tempfile
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)