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 コマンドは必要ないことも確認しました。cmd リストの最後に到達すると、自動的に終了します。

変数がわかったので、次の構文を使用して、bash スクリプト内から bsqldb に変数を渡すことができます。

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

楽しむ。

関連情報