Как запустить командную строку из скрипта sql
Перейти к содержимому

Как запустить командную строку из скрипта sql

  • автор:

Как запустить командную строку из скрипта sql

Всем привет!
Такой вопрос:
У меня есть MS SQL Server 2000. Как мне запустить sql-скрипт, развертывающий базу данных, из коммандной строки.

Re: MS SQL Server — Как из командной строки запустить sql-ск

От: ksg71
Дата: 26.08.05 11:05
Оценка: +1

Здравствуйте, Mechanic55, Вы писали:

M>Всем привет!
M>Такой вопрос:
M>У меня есть MS SQL Server 2000. Как мне запустить sql-скрипт, развертывающий базу данных, из коммандной строки.

смотри утилиту osql.exe

Das Reich der Freiheit beginnt da, wo die Arbeit aufhört. (c) Karl Marx
Re: MS SQL Server — Как из командной строки запустить sql-ск

От: Hobot Bobot
Дата: 26.08.05 11:06
Оценка:

Здравствуйте, Mechanic55, Вы писали:

M>Всем привет!
M>Такой вопрос:
M>У меня есть MS SQL Server 2000. Как мне запустить sql-скрипт, развертывающий базу данных, из коммандной строки.

Смотри утилиту isql.exe в каталоге Tools\Binn SQL Server’а

What a piece of work is a man! how noble in reason! how infinite in faculty! in form and moving how express and admirable! in action how like an angel! in apprehension how like a god! the beauty of the world! the paragon of animals!

Re[2]: MS SQL Server — Как из командной строки запустить sql

От: Mechanic55
Дата: 26.08.05 12:04
Оценка:

HB>Смотри утилиту isql.exe в каталоге Tools\Binn SQL Server’а

про утилиты я знаю. я формат строки не знаю. у меня есть скрипт и его из инсталятора надо бы развернуть

Re[3]: MS SQL Server — Как из командной строки запустить sql

От: Hobot Bobot
Дата: 26.08.05 13:34
Оценка:

Здравствуйте, Mechanic55, Вы писали:

HB>>Смотри утилиту isql.exe в каталоге Tools\Binn SQL Server’а

M>про утилиты я знаю. я формат строки не знаю. у меня есть скрипт и его из инсталятора надо бы развернуть

osql.exe -? — список ключей

osql.exe -U -P -i — выполнить файл используя указанный login/password

Кстати, лучше все-таки использовать osql.exe

What a piece of work is a man! how noble in reason! how infinite in faculty! in form and moving how express and admirable! in action how like an angel! in apprehension how like a god! the beauty of the world! the paragon of animals!

Re[3]: MS SQL Server — Как из командной строки запустить sql

От: wildwind
Дата: 26.08.05 14:52
Оценка:

Здравствуйте, Mechanic55, Вы писали:

M>про утилиты я знаю. я формат строки не знаю. у меня есть скрипт и его из инсталятора надо бы развернуть

Доступ к базе данных через командную строку Windows

Здравствуйте! Подскажите, пожалуйста, как вывести содержимое таблицы базы данных через командную строку Windows одной командой. Нужно вывести, не используя sqlcmd.

Отслеживать
9,644 4 4 золотых знака 35 35 серебряных знаков 72 72 бронзовых знака
задан 11 мая 2016 в 14:26
33 2 2 серебряных знака 7 7 бронзовых знаков
тоесть, вы хотите в стандартный cmd запихнуть sql запрос?
11 мая 2016 в 15:16

@YuriiManziuk, если возможно так, да. Главная цель — вывести содержимое таблицы каким-нибудь способом, используя командную строку windows

11 мая 2016 в 15:23
без программирования? вам нужен готовый продукт?
11 мая 2016 в 15:30

Т.е. вы хотите работать с sql server из консоли, не используя при этом стандартный консольный клиент для sql server? Зачем?

– user177221
11 мая 2016 в 16:13

Вы по-видимому использовали sqlcmd в интерактивном режиме, но скрипты sqlcmd может выполнять и одной командой, если задать параметром имя файла скрипта, или непосредственно текст скрипта, напр. sqlcmd -S hostName -d dbName -Q «select * from TableName» . Однако вот это: «запретили использовать sqlcmd» — довольно странное требование. А как ещё? Можно наверное для powershell скрипт написать. Или powershell тоже запрещено использовать?

12 мая 2016 в 5:25

2 ответа 2

Сортировка: Сброс на вариант по умолчанию

Одной командой с помощью sqlcmd:

sqlcmd -S hostName -d dbName -Q "select * from TableName" 

Если sqlcmd нельзя использовать, то ещё один вариант — использование powershell. Для этого создаём текстовый файл с раширением .ps1 примерно такого содержания:

$hostName = «hostName» $dbName = «dbName» $connectionString = «Server = $hostName; Database = $dbName; Integrated Security = True;» $connection = New-Object System.Data.SqlClient.SqlConnection $connection.ConnectionString = $connectionString $connection.Open() $cmd = New-Object System.Data.SqlClient.SqlCommand $cmd.CommandText = «SELECT * FROM TableName» $cmd.Connection = $connection $adapter = New-Object System.Data.SqlClient.SqlDataAdapter $adapter.SelectCommand = $cmd $dataTable = New-Object System.Data.DataTable $adapter.Fill($dataTable) > $null $connection.Close() foreach ($row in $dataTable.Rows) < for ($i=0; $i -lt $dataTable.Columns.Count; $i++) < $colName = $dataTable.Columns[$i]; $val = $row.ItemArray[$i]; if ([DBNull]::Value.Equals($val)) < write-host $colName " = NULL" >else

sqlcmd — запуск служебной программы

Служебная программа sqlcmd позволяет вводить инструкции Transact-SQL, системные процедуры и файлы скриптов в командной строке, в режиме SQLCMD в SQL Server Management Studio, а также в файле скрипта Windows или в шаге задания агента SQL Server (Cmd.exe).

По умолчанию в программе sqlcmdиспользуется проверка подлинности Windows. Чтобы использовать проверку подлинности SQL Server, необходимо указать имя пользователя и пароль с помощью параметров -U и -P .

По умолчанию SQL Server Express устанавливает в качестве именованного экземпляра sqlexpress.

Запуск программы sqlcmd и подключение к экземпляру SQL Server по умолчанию

  1. В меню «Пуск» выберите Выполнить. В поле Открыть введите cmd, а затем нажмите кнопку ОК, чтобы открыть окно командной строки. (Если вы еще не подключились к этому экземпляру ядра СУБД SQL Server, возможно, потребуется настроить SQL Server для принятия подключений.)
  2. В командной строке введите sqlcmd.
  3. Нажмите клавишу ВВОД. Теперь у вас есть надежное подключение к экземпляру SQL Server по умолчанию, работающему на компьютере. 1> представляет собой подсказку программы sqlcmd с номером строки. При каждом нажатии клавиши ВВОД номер увеличивается на единицу.
  4. Чтобы завершить сеанс sqlcmd , введите EXIT в запросе sqlcmd .

Запуск служебной программы sqlcmd и подключение к именованному экземпляру SQL Server

  1. Откройте окно командной строки и введите sqlcmd -SмойСервер\имяЭкземпляра. Замените myServer\instanceName именем компьютера и экземпляром SQL Server, к которому требуется подключиться.
  2. Нажмите клавишу ВВОД. Запрос sqlcmd ( 1> ) указывает, что вы подключены к указанному экземпляру SQL Server.

Заметка Введенные инструкции Transact-SQL хранятся в буфере. Они выполняются в пакетном режиме при обнаружении команды GO .

Далее

Дополнительные сведения о sqlcmd и связанных понятиях см. в следующих статьях:

  • Использование режима скриптов SQLCMD в SQL Server Management Studio
  • Выполнение файлов скрипта Transact-SQL с использованием программы sqlcmd
  • Использование программы sqlcmd
  • Инструкции служебных программ SQL Server — GO

Как выполнить MySQL запрос в скрипте командной строки

Когда вы пишите скрипт командной строки как часть некоторой пакетной обработки, бывают ситуации, когда скрипту нужно обработать данные, хранящиеся на отдельном MySQL сервере. Скриптовые языки общего назначения, вроде Perl и Python, имеют отдельные MySQL модули или интерфейсы для использования в этой ситуации, но скриптовые языки командной строки не имеют такого интерфейса для MySQL. Тем не менее, есть способы выполнить простые MySQL запросы и обработать результат посредством скрипта командной строки.

Далее инструкция, как сделать MySQL запрос в скрипте командной строки.

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

Предположим, что так и есть, в этом случае вы можете выполнить следующий шелл-скрипт. Пример кода, представленный здесь, выполняет простой MySQL вызов SELECT и обрабатывает результат, который, потенциально, содержит несколько строк.

#!/bin/bash result=`mysql -h $dbHost --user=$dbUser --password=$dbPassword --skip-column-names -e "select id from mydb.mytable where myattribute = 3"` items=$(echo $result | tr " " "n") for item in $items do echo "$item" done

В этом отрывке кода переменная «result» будет хранить множество записей таблицы, объединённых белым пробелом. Поэтому вам нужно разделить строку результата на индивидуальные строки, помещённые в «items» как массив. Наконец, обработайте в цикле индивидуальные строки так, как вы хотите.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *