2010-01-12 6 views
5

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

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

ответ

8

Oracle:

How can I issue a single command from the command line through sql plus?

@echo select version from system; | sqlplus username/[email protected] 

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

+0

То, что именно я искал .. Спасибо :) – Pia

+0

@ patrick..что мы можем передать вывод на файл выше? – Sunny

+0

@Sunny; '@echo выбрать версию из системы; | sqlplus имя пользователя/пароль @ база данных> file.ext'. –

5

EDIT: Этот ответ предназначен для 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>.

+2

Для SQL Server это работает отлично – Pia

0

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

3

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

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

Попробуйте

sqlplus user/[email protected] @query.sql > result.txt 

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

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

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

+0

это хорошо, но форматирование столбцов не очень хорошо ... –

Смежные вопросы