Qual é o formato dos dados que devem ser alimentados na ferramenta freetds bsqldb?

Qual é o formato dos dados que devem ser alimentados na ferramenta freetds bsqldb?

Preciso inserir meus dados no bsqldb.

Estou planejando passar meus dados para bsqldb de dentro de um script bash usando uma variável usando este comando:

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

$VARIABLE conterá dados organizados desta maneira:

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

O servidor sql ao qual estou me conectando é um MSSQL 2008 e parece estar executando o TDS v 7.1 (o que parece estranho ... leia em todos os lugares que 2008 deveria estar no 7.2, mas as ferramentas tds continuam dizendo que está rebaixando o protocolo para 7.1 quando eu conecto... mas isso é outro problema)

Responder1

Consegui testar isso e descobri.

Aqui está a maneira correta de estruturar os dados contidos na variável que você enviará ao bsqldb:

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

Como você pode ver, cada comando sql enviado para bsqldb deve estar em uma linha separada. É aqui que entra \n, ele representa o caractere "nova linha" ou "alimentação de linha". O restante "select @@servername", por exemplo, são os comandos SQL reais.

Aqui está o que o bsqldb verá quando eu alimentá-lo com $MyVariable acima:

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

Normalmente você precisa enviar um comando GO para executar uma série ou lote de comandos, mas como oGuia do usuário do Freetdsaponta emcapítulo 6 Use Freetdso último lote de comandos enviado ao bsqldb não precisa ser seguido por GO para ser executado, ele será executado automaticamente. Confirmei também que no final da sua lista cmd, ao contrário do tsql, o comando EXIT não é necessário para fechar a conexão com o servidor. Ele sai automaticamente quando chega ao final da sua lista de cmd.

Agora que descobrimos nossa variável, podemos alimentá-la no bsqldb a partir de um script bash usando esta sintaxe:

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

Aproveitar.

informação relacionada