必須提供給 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

享受。

相關內容