Может ли файл .bat выполнить запрос sql и вернуть значение? - PullRequest
5 голосов
/ 12 января 2010

Как я могу вызвать запрос из файла .bat? (скажем, мой запрос: выберите версию из системы).

Может ли мой файл .bat сохранить выходные данные, возвращаемые этим запросом? Я хочу использовать этот вывод в моем сценарии NSIS.

Ответы [ 6 ]

9 голосов
/ 12 января 2010

Для Oracle:

Как выполнить команду из командной строки через sql plus?

@echo select version from system; | sqlplus username/password@database 

Вы можете либо направить вывод в файл и использовать его, либо заключить его в команду for для анализа вывода в вашем пакетном файле.

5 голосов
/ 12 января 2010

РЕДАКТИРОВАТЬ: Этот ответ для SQL Server, а не Oracle. (не сразу было ясно, когда вопрос был опубликован).

Возможно, вы захотите проверить утилиту sqlcmd .

Утилита sqlcmd позволяет вводить операторы Transact-SQL, системные процедуры и файлы сценариев в командной строке. В следующем примере выполняется запрос, когда sqlcmd запускается, а затем сразу завершается. Можно выполнить несколько разделенных точкой с запятой запросов:

sqlcmd -d AdventureWorks -Q "SELECT FirstName, LastName FROM Person.Contact WHERE LastName LIKE 'Whi%';"

Чтобы сохранить вывод запроса в файл, вы можете использовать опцию -o C:\< filename>.

3 голосов
/ 12 января 2010

Это зависит от того, какой инструмент вы используете для выполнения запросов. Например, для инструмента командной строки mysql вы должны сделать:

mysql -u<user> -p<password> -h<host> -Nrs -e"SELECT version() FROM system" > out.txt

Здесь, часть, которая идет mysql -u<user> -p<password> -h<host> - это стандартные опции для подключения к серверу. -Nrs - это набор опций, которые заставят клиента не выводить весь ascii-арт для результатов. Бит, который идет -e"SELECT version() FROM system", фактически указывает команду, которая должна быть выполнена. См. http://dev.mysql.com/doc/refman/5.1/en/mysql-command-options.html для получения дополнительной информации об этих специфичных для mysql параметрах. Ищите похожие параметры в клиентском инструменте, который вы хотите использовать.

Последний бит > out.txt - это стандартное перенаправление на уровне операционной системы. Это приведет к тому, что выходные данные из программы mysql будут сохранены в файле out.txt, но, возможно, вы также можете перенаправить непосредственно в вашу программу NSIS.

2 голосов
/ 12 января 2010

Попробуйте

sqlplus user/pwd@mydb @query.sql > result.txt

, где query.sql содержит запрос к базе данных, а result.txt будет заполнен выводом запроса.

В зависимости от запроса, выходной файл может быть не таким, как вы ожидаете (заголовки столбцов и т. Д., Как типично для sqlplus), поэтому ваш query.sql должен содержать несколько команд SET для настройки вывода в соответствии с вашими потребностями.

Другой метод - использовать команду Oracle SPOOL вместо передачи результата в файл.

1 голос
/ 12 января 2010
0 голосов
/ 12 января 2010

Если у вас есть утилита SQL командной строки, то, скорее всего, она позволяет выполнять операции командной строки. По вашей SQL-версии вы можете проверить это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...