Как выполнить скрипт ms sql из файла

Обновлено: 07.07.2024

Имелись в виду именно файлы с исходным кодом запросов (типа select. ) .
Выполняемых в Query Analyzer (SQL Server 2000).
Нельзя ли вызывать из SQL запроса выполнение фала с другими запросами,
как например в bat файлах DOS?

Пишу файлы с исходным кодом запросов (типа, create database [RData]. ) .
Выполняемых в Query Analyzer (SQL Server 2000).
Для создания Базы с нуля. Файл большой, в нем и создание таблиц и создание хп, и первоначальное заполнение таблиц. .
Хочу разбить его(файл с исходным кодом запросов ) на отдельные файлы для удобства работы. Но выполнять как один файл из тогоже Query Analyzer.

Да проблема то из пальца высосана.

Может есть какие нибудь среды разработки(кроме QA) поддерживаюшие много файловый и много оконный интерфейс?

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

SOf>Есть 2 файла: a.sql и b.sql со скриптами SQL
SOf>Я запускаю на выполнение a.sql мне надо из него вызвать на выполнение b.sql

SOf>В Oracle, например, это элементарно можно сделать.
SOf>А как сделать это в MS SQL Server?
См. xp_cmdshell.

Re : Как в SQL Server вызвать один файл из другого Оценить
От: SOf
Дата: 02.04.02 12:53

Здравствуйте Lexey, Вы писали:
L>Здравствуйте SOf, Вы писали:
SOf>>Есть 2 файла: a.sql и b.sql со скриптами SQL
SOf>>Я запускаю на выполнение a.sql мне надо из него вызвать на выполнение b.sql
L>А зачем?

Чтобы я мог держать скрипты не в одном файле, а в нескольких.
ИМНО, иногда так делать логично и удобно

SOf>>В Oracle, например, это элементарно можно сделать.
SOf>>А как сделать это в MS SQL Server?
L>См. xp_cmdshell.

Про эту процедуру я знаю, но остается вопрос как ее использовать.
В принципе возможен вариант:

isql [необходимые параметры] -i b.sql

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

SOf>Есть 2 файла: a.sql и b.sql со скриптами SQL
SOf>Я запускаю на выполнение a.sql мне надо из него вызвать на выполнение b.sql

SOf>В Oracle, например, это элементарно можно сделать.
SOf>А как сделать это в MS SQL Server?

Знакомая проблема.
В мелкософт-сиквеле я не нашел способа выполнять из одного скрипта другой скрипт в контексте той же самой сессии.
Предлагаю простой дедовский способ, к-рый использую сам.
Пишешь *.cmd который принимает в качестве парамтеров пароль, имя пользователя, имя БД.
У меня в командной строке передается только пароль, все остальное я храню в переменных окружения.

1.Сначала устанавливаешь переменные окружения (если решишь их использовать)
rem Set environment variables
call MyEnv.cmd

2.Далее пакетный файл сшивает скрипты в один временный файл в том порядке, в каком нужно.
type package1_ms.sql > MyInstall_ms.sql
type package2_ms.sql >> MyInstall_ms.sql
type package3_ms.sql >> MyInstall_ms.sql
<. and so on>

3. Запускаем OSQL:
В данном примере пароль передается в командной строке, все остальное - переменные окружения.
osql -n -w 255 -b -S %MS_SRV_NAME% -d %DB_NAME% -U %SQL_USER% -P %1 -i MyInstall_ms.sql -o MyInstall_ms.log
if errorlevel 1 goto error
goto success

4. Обработка результата, собс-но

Ограничения:
Размер скрипта, исполняемого OSQL: 64К сетевых пакетов (если не изменяет память) - более чем достаточно для инсталляции проекта

2. Контроль создаия объектов БД:
***RAISERROR with a state of 127
***If RAISERROR is used within an osql script and a state of 127 is raised, osql will quit and return the message
***ID back to the client. For example:
***RAISERROR(50001, 10, 127)

В своих скриптах я использую проверку вида:
CEATE FUNCTION MyFunction
<. >
GO
IF @@ERROR <> 0
RAISERROR ('ERROR! --> FUNCTION''s MyFunction creation has failed', 16, 127)
ELSE
PRINT 'INSTALL --> FUNCTION MyFunction created'
GO

Вот собс-но и всё.
Ну и заготовь набор файлов с переменными окружения если много клиентских баз :))

Re : Как в SQL Server вызвать один файл из другого Оценить
От: SOf
Дата: 03.04.02 09:53

Большое спасибо.
Было очень приятно получить такой исчерпывающий ответ.

Это использование isql
Из BOL:

When using isql interactively, you can read an operating-system file into the command buffer with :r file_name. Do not include a command terminator in the file; enter the terminator interactively after you have finished editing.

SQLCmd, запуск скриптов SQL из командной строки, применение, интерактивный и пакетный режимы работы, применение переменных окружения

SQLCmd — это еще одна новая (и очень важная) утилита, входящая в состав SQL Server 2005. Она предназначена для выполнения скриптов Transact - SQL из командной строки и призвана заменить использовавшиеся для этой цели в предыдущих версиях SQL Server утилиты osql и isql . При этом утилита isql (которая использовала для подключения устаревшую библиотеку DBLibrary ) вообще удалена из поставки SQL Server 2005, а osql (которая работает по ODBC ) пока сохранена, но рекомендуется по возможности всегда использовать только SQLCmd . Сама утилита SQLCmd работает по OLE DB без использования SQL Native Client .

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

q на SQL Server 2005 нужно создать и настроить базу данных. Произвести создание самой базы данных, объектов ней, а также выполнить первоначальную загрузку данных удобнее всего при помощи скриптов SQLCmd (если вы не используете для этой цели резервные копии базы данных);

q необходимо внести обновления в существующую базу данных, например, изменить ее структуру. Если вы — разработчик, и вам нужно обеспечить единообразное внесение изменений, например, во всех филиалах, то применение SQLCmd может оказаться самым простым и надежным решением;

q когда нужно, чтобы выполнение определенных команд Transact - SQL инициировала операционная система (например, если вы используете планировщик операционной системы для выполнения каких-то действий на SQL Server по расписанию).

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

Полный синтаксис команд SQLCmd приводиться здесь не будет: его всегда можно посмотреть в документации. Приведем только самый распространенный вариант применения SQLCmd . Предположим, что вам нужно выполнить скрипт из файла C:\SQLQuery.sql и записать результаты в файл C:\Results.txt . Скрипт нужно выполнить на сервере LONDON\SQL2005 , подключившись от имени пользователя SA с паролем P@ssw0rd . Команда при этом может быть такой:

sqlcmd -S LONDON7\SQL2005 -Usa -PP@ssw0rd -i C:\SQLQuery.sql -o C:\Results.txt

Отметим некоторые моменты, связанные с применением SQLCmd :

q скрипты для SQLCmd можно готовить и отлаживать в привычной графической среде SQL Server Management Studio (с поддержкой всех специальных команд и возможностей SQLCmd ). Для этого достаточно перевести редактор кода в специальный режим написания скриптов SQLCmd . Эта операция производится из меню Query | SQLCmd Mode (Запрос | Режим SQLCmd ). Правда, необходимо учитывать, что в этом режиме SQL Server Management Studio будет использовать для подключения SQL Native Client (в отличие от OLE DB , используемого SQLCmd ): могут быть мелкие отличия в результатах выполнения скриптов;

q SQLCmd умеет использовать переменные окружения операционной системы. Если вы заранее создали на компьютере нужные вам переменные окружения, можно не указывать в скрипте, например, логин, используемый для подключения, пароль, имя сервера, имя базы данных и т. п. — всю необходимую информацию SQLCmd "подхватит" автоматически. Можно даже определить специальную переменную окружения sqlcmdini . Скрипт, который вы укажете при помощи этой переменной окружения, будет выполнен автоматически:

q SQLCmd можно использовать для выгрузки данных с SQL Server в формате XML . (для выполнения команд SELECT с параметрами FOR XML и записи результатов в файл). Для этого необходимо перевести SQLCmd в специальный XML -режим с помощью команды :XML ON . Отключить этот режим можно командой :XML OFF .

Я хочу выполнить текстовый файл, содержащий запросы SQL, в MySQL.

Я попытался запустить source/Desktop/test.sql и получил ошибку:

mysql>. \home\sivakumar\Desktop\test.sql ОШИБКА: не удалось открыть файл '\ home\sivakumar\Desktop\test.sql', ошибка: 2

Есть идеи, что я делаю не так?

ОТВЕТЫ

Ответ 1

Если вы в командной строке MySQL mysql> , вам нужно объявить файл SQL как source .

Ответ 2

У вас довольно много вариантов:

  • используйте клиент командной строки MySQL: mysql -h hostname -u user database < path/to/test.sql
  • Установите инструменты GUI MySQL и откройте свой файл SQL, затем выполните его
  • Используйте phpmysql, если база данных доступна через ваш веб-сервер

Ответ 3

вы можете выполнить инструкции mysql, которые были записаны в текстовом файле, используя следующую команду:

если ваша база данных еще не создана, сначала войдите в свой mysql, используя:

который должен это сделать!

Ответ 4

Все лучшие ответы хороши. Но на всякий случай кто-то хочет запустить запрос из текстового файла на удаленном сервере И сохранить результаты в файл (вместо показа на консоли), вы можете сделать это:

Надеюсь, это поможет кому-то.

Ответ 5

Мой любимый вариант сделать это будет:

Я использую это таким образом, потому что, когда вы связываете это с "", вы избегаете неправильного пути и ошибок с пробелами и - и, возможно, больше проблем с символами, с которыми я не сталкивался.

С комментарием @elcuco я предлагаю использовать эту команду вместе с [пробелом], поэтому она говорит bash игнорировать сохранение в истории, это будет работать из коробки в большинстве bash.

если ваша команда все еще сохраняется в истории, просмотрите следующие решения:

дополнительная безопасность редактирования

На всякий случай, если вы хотите быть более безопасным, вы можете использовать следующую команду и ввести пароль в командной строке:

Ответ 6

Я пришел сюда, ища этот ответ, и вот что я нашел, работает для меня лучше: Примечание. Я использую Ubuntu 16.xx

mysql -u <your_user> - p

Надеюсь это поможет.

Ответ 7

Укажите путь к файлу .sql как:

See In The Image:

Ответ 8

Не указывать одинарные кавычки.

Если приведенная выше команда не работает, скопируйте файл на диск c: и повторите попытку. как показано ниже,

Ответ 9

Никогда не рекомендуется передавать аргумент пароля непосредственно из командной строки, он сохраняется в файле

/.bash_history и может быть доступен из других приложений.

Используйте это вместо:

Ответ 10

Ответ 11

Скорее всего, вам просто нужно изменить косую черту /blackslash: от

Таким образом, команда будет следующей:

Ответ 12

используйте следующее из командной строки mysql -

Не используйте цитату. Даже если путь содержит пробел (''), используйте никакую цитату вообще.

Ответ 13

Так как mysql -u yourusername -p yourpassword yourdatabase < text_file не работал на удаленном сервере (Amazon EC2).

Сначала убедитесь, что база данных создана.

Ответ 14

В будущем, я нашел, что это работает против вышеупомянутых методов под Windows в консоли msql:

Если ваш корневой диск не называется "c", тогда просто обменивайтесь тем, что вы вызываете. Сначала попробуйте обратную косую черту, если они не работают, попробуйте косую черту. Если они также не работают, убедитесь, что у вас есть полный путь к файлу, расширение .sql для имени файла, и если ваша версия настаивает на полуколонах, убедитесь в этом и повторите попытку.

Ответ 15

вместо перенаправления я бы сделал следующее

Это выполнит файл path-to-sql-file

Ответ 16

У меня была эта ошибка, и я пробовал все советы, которые я мог получить безрезультатно.

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

Ответ 17

Так много способов сделать это.

Если вы получаете ошибки из командной строки, убедитесь, что вы ранее запустили

Это должно быть выполнено из каталога mysqld.exe, отсюда и CD.

Надеюсь, что это полезно, а не просто излишне.

Ответ 18

Вы можете использовать SQLyog Выполнить SQL script для выполнения файла .sql. Выберите файл и нажмите "Выполнить".:-) Вы получаете 30-дневную бесплатную пробную версию.

И вы получаете ошибку, потому что у вас есть цитаты вокруг имени файла.

Файл должен находиться на клиентском хосте, где вы используете mysql. Имя файла должно быть абсолютным путем, указывающим полное имя файла, или имя пути, которое указано относительно каталога, в котором вы вызывали mysql. Например, если вы запустили mysql на компьютере под управлением Windows в каталоге C:\mysql, а ваш файл script - my_commands.sql в каталоге C:\scripts, обе следующие команды SOURCE сообщают mysql выполнить SQL-запросы в файл:

mysql > SOURCE C:\scripts\my_commands.sql;

Другой способ выполнить файл script - это присвоить ему имя в командной строке mysql. Вызвать mysql и использовать < оператор перенаправления ввода, чтобы указать файл для чтения ввода запроса:

Привет! Сегодня мы поговорим о том, как можно сгенерировать SQL скрипты создания объектов базы данных Microsoft SQL Server, включая сами данные, стандартными средствами SQL Server Management Studio (SSMS).

SQL скрипты создания объектов базы данных Microsoft SQL Server

Что такое SQL скрипт объекта базы данных?

SQL скрипт объекта базы данных – это SQL инструкция, с помощью которой создается этот объект, сохраненная в текстовом файле.

Иными словами, это простой SQL запрос, обычно сохраненный в текстовом файле с расширением .sql. В этом SQL запросе содержатся все необходимые инструкции создания объекта (или объектов), включая инструкции наполнения его данными.

Такой SQL скрипт можно открыть любым текстовым редактором, скопировать текст SQL запроса и выполнить, например, в среде SQL Server Management Studio, таким образом, создав объект базы данных, не разрабатывая соответствующие SQL инструкции самостоятельно.

Также SQL скрипты можно открыть специальными программами, которые умеют работать с SQL скриптами, и выполнять их на базе данных.

Что могут содержать SQL скрипты?

SQL скрипты объектов базы данных могут содержать:

  • Инструкции создания таблиц (CREATE);
  • Заполнение таблиц (инструкции INSERT);
  • Определение представлений, функций, хранимых процедур, триггеров;
  • Определение ограничений и индексов;
  • Определение создания других объектов;
  • И другие SQL инструкции.

Для чего могут потребоваться SQL скрипты объектов базы данных?

SQL скрипты объектов базы данных могут потребоваться администраторам или разработчикам, например, для того, чтобы в случае необходимости иметь возможность быстро восстановить эти объекты.

Или для того, чтобы передать эти SQL скрипты другому администратору, разработчику или заказчику, чтобы он создал подобные объекты на своем экземпляре SQL Server.

Таким образом, такие SQL скрипты необходимы для хранения копий SQL инструкций, с помощью которых создавались объекты базы данных.

Как создать SQL скрипт объекта базы данных в Microsoft SQL Server?

Так как SQL скрипт – это обычный текстовый файл, его можно создать вручную, например, когда Вы разрабатываете объект БД, Вы просто сохраняете SQL инструкцию в файл, и добавляете в него по мере необходимости другие SQL инструкции.

Однако также возможно автоматически сгенерировать SQL скрипты объектов базы данных специальными инструментами, например, в среде SQL Server Management Studio (SSMS). А как это делается, я сейчас и покажу.

Заметка! Если Вас интересует SQL и T-SQL, рекомендую посмотреть мои видеокурсы по T-SQL, с помощью которых Вы «с нуля» научитесь работать с SQL и программировать с использованием языка T-SQL в Microsoft SQL Server.

Создание SQL скрипта объекта базы данных Microsoft SQL Server

В качестве исходных данных у меня будет база данных TestDB и таблица Goods, SQL скрипт которой мне и нужно создать. При этом мне необходимо, чтобы скрипт включал не только определение инструкции CREATE, но и данные, которые содержит эта таблица.

В качестве инструмента я буду использовать SQL Server Management Studio.

Итак, давайте начнем.

Шаг 1 – Запускаем SSMS

Сначала запускаем среду SQL Server Management Studio любым удобным для Вас способом, иными словами, никаких особых манипуляций с открытием SSMS выполнять не требуется.

Шаг 2 – Запускаем задачу «Сформировать скрипты»

Далее в обозревателе объектов находим нужную нам базу данных, затем открываем контекстное меню правой кнопкой мыши, ищем пункт «Задачи», и выбираем задачу «Сформировать скрипты».

Скриншот 1

В итоге запустится мастер создания скриптов. В окне «Введение» можем сразу нажать «Далее».

Скриншот 2

Шаг 3 – Выбираем объекты для включения в SQL скрипт

После этого нам нужно выбрать объекты базы данных, которые необходимо включить в SQL скрипт. При этом нам доступно два варианта:

  • Создать скрипт для всей базы данных и всех ее объектов – этот вариант предполагает, что Вам нужен скрипт создания всех объектов в БД;
  • Выбрать отдельные объекты базы данных – в данном случае в скрипт включатся SQL инструкции только тех объектов, которые Вы укажете.

Так как мне нужно сохранить только одну таблицу, я выбираю второй вариант и отмечаю нужную таблицу, т.е. в моем случае Goods.

Скриншот 3

Шаг 4 – Задание параметров SQL скрипта

Теперь мы можем указать параметры формирования скрипта, в частности, каким образом мы хотим получить скрипт.

Доступно 3 способа:

  • Сохранить в файл – при этом мы можем сами указать нужный нам каталог для сохранения;
  • Сохранить в буфер обмена;
  • Сохранить в новое окно запросов.

Также есть и дополнительные параметры, чтобы их открыть, необходимо нажать на соответствующую кнопку.

Скриншот 4

В дополнительных параметрах мы можем более тонко настроить принцип формирования SQL скрипта, например, для того чтобы скрипт включал еще и SQL инструкции создания данных, необходимо в параметрах отметить соответствующий пункт, т.е. указать «Схема и данные».

Также Вы можете включить в скрипты инструкции DROP на случай, если Вам нужно пересоздать объекты.

После того как все параметры заданы, нажимаем «ОК», а после для продолжения кнопку «Далее».

Скриншот 5

Шаг 5 – Проверка параметров и запуск процесса создания скрипта

На данном шаге все проверяем и запускаем сам процесс формирования скрипта, т.е. нажимаем «Далее».

Скриншот 6

Шаг 6 – Завершение процесса и результат

Когда процесс будет завершен, программа сообщит Вам об этом, нажимаем «Готово».

Скриншот 7

В результате в каталоге, который Вы указали в параметрах формирования скрипта, появится SQL скрипт, а по факту обычный текстовый файл с расширением .sql.

Если его открыть, например, текстовым редактором, то можно посмотреть на все SQL инструкции. Они будут выглядеть примерно следующим образом.

Скриншот 8

Видео-инструкция

Выполнить несколько сценариев в SQLServer с помощью SQLCMD

в качестве DBA , Часто использующие разработчиков SQL Скрипт для обновления официальной базы данных, но разумный процесс разработки при отправке скрипта на DBA Когда выполнено, может быть уже сотни sql Файлы и порядок выполнения, такие как компания, в которой я сейчас работаю, дюжина клиентов, одна библиотека на каждого клиента, но структура базы данных, хранимые процедуры, представления и т. Д. Абсолютно одинаковы при каждом выполнении сценария (в дальнейшем именуемом обновлением) Существует сотня сценариев, а затем они должны выполняться тысячи раз подряд. Эта рабочая нагрузка не может позволить себе ни один человек.

1. Приобретите стороннее программное обеспечение (как правило, мало кто будет его покупать)

2. Запрограммируйте небольшой программный продукт для его самостоятельного выполнения, но это логическое требование относительно высокое, и способность к программированию должна иметь определенный уровень, которого у меня пока нет.

3. Используя метод, описанный в этой статье, посмотрите, что:

SQLCMD: использование sqlcmd Утилиты, доступные в командной строке, на SQLCMD В режиме “ Редактор запросов ” В, в Windows В файле скрипта или SQL Server Операционная система для агентских заданий (Cmd.exe) Введите в шаг работы Transact-SQL Заявления, системные процедуры и файлы сценариев. Эта утилита использует ODBC выполнение Transact-SQL Пакетная обработка. (Из MSDN ) Подробный синтаксис можно найти в интернете, а не размещать здесь

SQLCMD Есть важная команда: :r Помните, SQLCMD Чувствителен к регистру. когда :r Найдено работает SQL Сценарий и он скажет SQLCMD Поместите файлы, на которые ссылается этот файл, в вызывающий скрипт вместе. Это скажет вам остановить текущий одиночный запрос. И заново настройте запрос, чтобы поместить запрос, который должен быть связан с соответствующим местоположением. В качестве альтернативы используйте :r Команда выполняет несколько сценариев в пакете, что позволяет вам определить один набор переменных, чтобы включить все сценарии, но не GO Терминатор. от 2005 Введено позже SQLCMD Это может быть использовано для будущих замен osql Инструмент. Если вы не знакомы SQLCMD Может рассматриваться как исполняемый файл из операционной системы T-SQL Инструменты командной строки для команд и скриптов.

В следующем примере создайте 5 файлов SQL, связанных с базой данных TestDB. Первый скрипт называется CREATE_DB.sql и используется для создания базы данных с именем TestDB. Этот скрипт содержит 4 других скрипта (с помощью команды: r) для генерации других таблиц, вставки таблиц, создания индекса и создания хранимых процедур. Файл .bat используется для создания команд SQLCMD.

Шаг 1: Сначала создайте папку на диске C: C: \ Scripts. Затем поместите скрипт в эту папку:

Сценарий 1: CREATE_DB.sql

Сценарий 2: CREATE_INDEXES.sql


Сценарий 3: CREATE_PROCEDURES.sql


Сценарий 4: CREATE_TABLES.sql


Сценарий 5: TABLE_INSERTS.sql

Шаг 2: Создайте файл bat create_db.bat в корневом каталоге диска C для выполнения SQLCMD:


Шаг 3. Запустите файл bat непосредственно на диске C:

Дважды щелкните файл, чтобы увидеть:

До выполнения TestDB не существует:



После выполнения создается все для создания:


Поскольку порядок выполнения был определен в сценарии 1, он может быть выполнен напрямую, и выполнение прошло успешно.

Согласно личному опыту, лучше разработать инструмент пакетного выполнения, который можно использовать при небольшом количестве сценариев.

Интеллектуальная рекомендация


[Makefile от более мелких к более глубоким полная запись обучения 4] Переменные и различные методы присвоения

Давайте сегодня узнаем о различных методах присваивания переменных в Makefile! Смысл тяжелой работы, чтобы бедность больше не ограничивать свое воображение! Добавьте QQ, чтобы вместе учиться и обменив.

[Luogu P3147] [BZOJ 4576] [USACO16OPEN]262144

Портал Луогу БЗОЙ Портал Описание заголовка Bessie likes downloading games to play on her cell phone, even though she doesfind the small touch screen rather cumbersome to use with her large hooves. Sh.

Читайте также: