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 コマンドは必要ないことも確認しました。cmd リストの最後に到達すると、自動的に終了します。
変数がわかったので、次の構文を使用して、bash スクリプト内から bsqldb に変数を渡すことができます。
/usr/bin/bsqldb -S servername -U username -P password <<< $MyVariable
楽しむ。