linux - freeTDS bash : Executing sql queries in Microsoft SQL server

标签 linux tsql bash shell freetds

我能够使用 freeTSD 和命令行通过 Mint Linux VM 连接到 Microsoft SQL Server 2008 实例以在其上执行 sql 语句。现在我想在 bash 脚本中自动执行此操作。我能够在我的 bash 脚本中成功登录:

TDSVER=8.0 tsql -H servername -p 1433 -D dbadmin -U domain\\Administrator -P password

然后我有我的 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

这在通过 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

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> 

然后执行脚本的其余部分。

有人可以一步一步地回答我的问题吗?

最佳答案

我完全不确定您的示例如何工作。

这是我的 bash 脚本示例:

echo "USE dbname .... exit" > tempfile | TDSVER=8.0 tsql -H servername -p 1433 -D dbname -U domain\\Administrator -P password < tempfile
# ------------------------------------^^^^ ---- pipe char?

尝试使用“;”字符。

echo "USE dbname .... exit" > tempfile ; TDSVER=8.0 tsql -H servername -p 1433 -D dbname -U domain\\Administrator -P password < tempfile
# ------------------------------------^^^^ ---- semi-colon

更好的是,使用 shell 的“here documents”。

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

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

关于linux - freeTDS bash : Executing sql queries in Microsoft SQL server,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13096018/

相关文章:

BASH,目录更新时自动运行脚本?

linux - 当我从另一个 bash 运行 bash 时,{{1..5}} 停止工作为什么?

linux - 以编程方式获取另一个进程的父 pid?

performance - 为什么交叉应用比内连接快?

SQL Server : Create an optimized view that retrieve the most recent non null value

SQL 性能,使用 OPTION (FAST n)

linux - 如何以编程方式检测 Ubuntu 上的软件包和操作系统版本

linux - 使用 sed, tr, ... 修复文件结构

linux - 给定一个 PPID,如何找到所有关联的 PID?

php - 是否可以在 Windows (XAMPP) 和 Linux (LAMP) 上使用相同的 MySQL 数据库?