必须提供给 freetds 工具 bsqldb 的数据格式是什么?

必须提供给 freetds 工具 bsqldb 的数据格式是什么?

我需要将数据输入到 bsqldb。

我计划使用以下命令将数据从 bash 脚本中传递到 bsqldb:

/usr/bin/bsqldb -S servername -U username -P password <<< ${VARIABLE}

$VARIABLE 将包含以这种方式组织的数据:

USE databasename
customsqlfunction ('param1','param2','param3','param4','param5')
customsqlfunction ('param1','param2','param3','param4','param5')
customsqlfunction ('param1','param2','param3','param4','param5')
customsqlfunction ('param1','param2','param3','param4','param5')

我连接到的sql服务器是MSSQL 2008,它似乎正在运行TDS v 7.1(这看起来很奇怪......到处阅读2008应该是7.2,但tds工具一直说它正在将协议降级到7.1我连接...但这是另一个问题)

答案1

我设法测试了这一点并弄清楚了。

以下是构建将发送到 bsqldb 的变量中包含的数据的正确方法:

MyVariable="select @@servername"$'\n'"select @@language"$'\n'"select @@version"

正如您所看到的,发送到 bsqldb 的每个 sql 命令都必须位于单独的行上。这就是 \n 出现的地方,它代表“换行”或“换行”字符。例如,其余的“select @@servername”是实际的 SQL 命令。

这是当我从上面输入 $MyVariable 时 bsqldb 将看到的内容:

select @@servername
select @@language
select @@version

通常您需要发送 GO 命令来执行一系列或批量命令,但作为Freetds 用户指南指出在第 6 章 使用 Freetds最后一批发送到bsqldb的命令不需要后面跟GO来执行,它会自动运行。我还确认,在 cmd 列表的末尾,与 tsql 相反,不需要 EXIT 命令来关闭与服务器的连接。一旦到达命令列表的末尾,它就会自动退出。

现在我们已经弄清楚了变量,我们可以使用以下语法从 bash 脚本中将其提供给 bsqldb:

/usr/bin/bsqldb -S servername -U username -P password <<< $MyVariable

享受。

相关内容