Welches Format haben die Daten, die dem Freetds-Tool bsqldb zugeführt werden müssen?

Welches Format haben die Daten, die dem Freetds-Tool bsqldb zugeführt werden müssen?

Ich muss meine Daten in bsqldb eingeben.

Ich plane, meine Daten mithilfe einer Variablen und diesem Befehl aus einem Bash-Skript heraus an bsqldb zu übergeben:

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

$VARIABLE enthält Daten, die folgendermaßen organisiert sind:

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')

Der SQL-Server, mit dem ich mich verbinde, ist ein MSSQL 2008 und scheint mit TDS v 7.1 zu laufen (was seltsam erscheint... überall habe ich gelesen, dass 2008 angeblich auf 7.2 läuft, aber die TDS-Tools sagen immer wieder, dass das Protokoll auf 7.1 heruntergestuft wird, wenn ich mich verbinde... aber das ist ein anderes Problem).

Antwort1

Ich konnte dies testen und habe es herausgefunden.

So strukturieren Sie die Daten in der Variable, die Sie an bsqldb senden, richtig:

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

Wie Sie sehen, muss jeder an bsqldb gesendete SQL-Befehl in einer separaten Zeile stehen. Hier kommt \n ins Spiel, es steht für das „Newline“- oder „Linefeed“-Zeichen. Der Rest, beispielsweise „select @@servername“, sind die eigentlichen SQL-Befehle.

Folgendes wird bsqldb sehen, wenn ich es von oben mit $MyVariable füttere:

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

Normalerweise müssen Sie einen GO-Befehl senden, um eine Reihe oder einen Stapel von Befehlen auszuführen.Freetds Benutzerhandbuchweist darauf hin inKapitel 6 Freetds verwendenAuf die letzte an bsqldb gesendete Befehlsgruppe muss kein GO folgen, um ausgeführt zu werden, sie wird automatisch ausgeführt. Ich habe auch bestätigt, dass am Ende Ihrer Befehlsliste im Gegensatz zu tsql der Befehl EXIT nicht erforderlich ist, um die Verbindung zum Server zu schließen. Es wird automatisch beendet, sobald das Ende Ihrer Befehlsliste erreicht ist.

Nachdem wir nun unsere Variable herausgefunden haben, können wir sie mit dieser Syntax aus einem Bash-Skript heraus an bsqldb weitergeben:

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

Genießen.

verwandte Informationen