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장 Freetd 사용bsqldb로 전송된 명령의 마지막 배치는 실행되기 위해 GO 뒤에 올 필요가 없으며 자동으로 실행됩니다. 또한 tsql과 달리 cmd 목록 끝에서 서버에 대한 연결을 끊는 데 EXIT 명령이 필요하지 않다는 것도 확인했습니다. cmd 목록 끝에 도달하면 자동으로 종료됩니다.
이제 변수를 파악했으므로 다음 구문을 사용하여 bash 스크립트 내에서 bsqldb에 이를 제공할 수 있습니다.
/usr/bin/bsqldb -S servername -U username -P password <<< $MyVariable
즐기다.