6 t-sql linux bash shell freetds
我可以通过Mint Linux VM使用freeTSD和命令行连接到Microsoft SQL Server 2008实例,以在其上执行sql语句.现在我想在bash脚本中自动执行此操作.我能够成功登录我的bash脚本:
TDSVER=8.0 tsql -H servername -p 1433 -D dbadmin -U domain\\Administrator -P password
Run Code Online (Sandbox Code Playgroud)
然后我有我的SQL查询:
USE dbname GO delete from schema.tableA where ID > 5 GO delete from schema.tableB where ID > 5 GO delete from schema.tableC where ID > 5 GO exit
Run Code Online (Sandbox Code Playgroud)
这通过freeTSD命令行手动执行时有效,但是当我放入bash文件时则不行.我关注这篇文章:freeTSD&bash.
这是我的bash脚本示例:
echo "USE dbname GO delete from schema.tableA where userid > 5 go delete from schema.tableB where userid > 5 go delete from schema.tableC where ID > 5 GO exit" > tempfile | TDSVER=8.0 tsql -H servername -p 1433 -D dbname -U domain\\Administrator -P password < tempfile
Run Code Online (Sandbox Code Playgroud)
bash脚本的输出是:
locale is "en_US.UTF-8"
locale charset is "UTF-8"
Default database being set to sbdb
1> 2> 3> 4> 5> 6> 7> 8>
Run Code Online (Sandbox Code Playgroud)
然后我的脚本的其余部分被执行.
有人能给我一步一步解答我的问题吗?
我不确定你的示例如何工作。
这是我的 bash 脚本示例:
echo "USE dbname .... exit" > tempfile | TDSVER=8.0 tsql -H servername -p 1433 -D dbname -U domain\\Administrator -P password < tempfile
# ------------------------------------^^^^ ---- pipe char?
Run Code Online (Sandbox Code Playgroud)
尝试使用“;” 字符。
echo "USE dbname .... exit" > tempfile ; TDSVER=8.0 tsql -H servername -p 1433 -D dbname -U domain\\Administrator -P password < tempfile
# ------------------------------------^^^^ ---- semi-colon
Run Code Online (Sandbox Code Playgroud)
更好的是,使用 shell 的“此处文档”。
TDSVER=8.0 tsql -H servername -p 1433 -D dbname -U domain\\Administrator -P password <<EOS
USE dbname
GO
delete from schema.tableA where userid > 5
go
delete from schema.tableB where userid > 5
go
delete from schema.tableC where ID > 5
GO
exit
EOS
Run Code Online (Sandbox Code Playgroud)
IHTH。
当前命令行输入:
echo "delete from table where userid > 5
go
delete from table where userid > 5
go
delete from table where ID > 5
GO
exit" < /tmp/tempfile; TDSDUMP=/tmp/freetds.log TDSVER=8.0 tsql -H servername -p 1433 -D dbname -U Administrator -P password <<EOS
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
24714 次 |
最近记录: |