我需要將資料輸入到 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
享受。