Necesito ingresar mis datos a bsqldb.
Estoy planeando pasar mis datos a bsqldb desde un script bash usando una variable usando este comando:
/usr/bin/bsqldb -S servername -U username -P password <<< ${VARIABLE}
$VARIABLE contendrá datos organizados de esta manera:
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')
El servidor SQL al que me estoy conectando es MSSQL 2008 y parece estar ejecutando TDS v 7.1 (lo cual parece extraño... leer en todas partes se supone que 2008 está en 7.2, pero las herramientas tds siguen diciendo que está degradando el protocolo a 7.1 cuando me conecto... pero ese es otro tema)
Respuesta1
Logré probar esto y lo descubrí.
Esta es la forma correcta de estructurar los datos contenidos en la variable que enviará a bsqldb:
MyVariable="select @@servername"$'\n'"select @@language"$'\n'"select @@version"
Como puede ver, cada comando sql enviado a bsqldb debe estar en una línea separada. Aquí es donde entra en juego \n, representa el carácter de "nueva línea" o "salto de línea". El resto, "seleccione @@nombredeservidor", por ejemplo, son los comandos SQL reales.
Esto es lo que verá bsqldb cuando le proporcione $MyVariable desde arriba:
select @@servername
select @@language
select @@version
Normalmente es necesario enviar un comando GO para ejecutar una serie o lote de comandos, pero comoguía del usuario de freetdsseñala encapítulo 6 Utilice FreetdsNo es necesario que el último lote de comandos enviados a bsqldb vaya seguido de GO para ejecutarse, se ejecutará automáticamente. También confirmé que al final de su lista de cmd, a diferencia de tsql, no se requiere el comando EXIT para cerrar la conexión con el servidor. Sale automáticamente una vez que llega al final de su lista de cmd.
Ahora que hemos resuelto nuestra variable, podemos enviarla a bsqldb desde un script bash usando esta sintaxis:
/usr/bin/bsqldb -S servername -U username -P password <<< $MyVariable
Disfrutar.