Какой формат данных необходимо передать инструменту freetds bsqldb?

Какой формат данных необходимо передать инструменту freetds bsqldb?

Мне нужно ввести данные в bsqldb.

Я планирую передать свои данные в bsqldb из скрипта bash, используя переменную с помощью этой команды:

/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"

Как видите, каждая команда sql, отправляемая в bsqldb, должна быть на отдельной строке. Вот тут-то и появляется \n, он представляет собой символ "newline" или "linefeed". Остальные, например "select @@servername", являются фактическими командами SQL.

Вот что увидит bsqldb, если я передам ему $MyVariable, указанную выше:

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

Обычно вам нужно отправить команду GO для выполнения серии или пакета команд, но какРуководство пользователя Freetdsуказывает вглава 6 Использование Freetdsпоследняя партия команд, отправленных в bsqldb, не обязательно должна сопровождаться GO для выполнения, она запустится автоматически. Я также подтвердил, что в конце вашего списка cmd, в отличие от tsql, команда EXIT не требуется для закрытия соединения с сервером. Она автоматически завершается, как только достигает конца вашего списка cmd.

Теперь, когда мы определились с нашей переменной, мы можем передать ее в bsqldb из скрипта bash, используя следующий синтаксис:

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

Наслаждаться.

Связанный контент