Перейти к содержимому

Как запустить файл sql

  • автор:

sqlcmd — запуск файлов скриптов Transact-SQL

Для запуска файла скрипта Transact-SQL используйте sqlcmd . Файл скрипта Transact-SQL является текстовым файлом, содержащим сочетание инструкций Transact-SQL, команд sqlcmd и переменных скрипта.

Создание файла скрипта

Чтобы создать файл скрипта Transact-SQL с помощью Блокнота, выполните следующие действия.

  1. Нажмите кнопку Пуск, выберите Все программы, Стандартные и Блокнот.
  2. Скопируйте и вставьте следующий код языка Transact-SQL в приложение «Блокнот»:

USE AdventureWorks2022; GO SELECT p.FirstName + ' ' + p.LastName AS 'Employee Name', a.AddressLine1, a.AddressLine2 , a.City, a.PostalCode FROM Person.Person AS p INNER JOIN HumanResources.Employee AS e ON p.BusinessEntityID = e.BusinessEntityID INNER JOIN Person.BusinessEntityAddress bea ON bea.BusinessEntityID = e.BusinessEntityID INNER JOIN Person.Address AS a ON a.AddressID = bea.AddressID; GO 

Выполнение файла скрипта

  1. Откройте окно командной строки.
  2. В окне командной строки введите sqlcmd -S myServer\instanceName -i C:\myScript.sql
  3. Нажмите клавишу ВВОД.

В окне командной строки будет выведен список имен и адресов сотрудников Adventure Works.

Сохранение результата в текстовом файле

  1. Откройте окно командной строки.
  2. В окне командной строки введите sqlcmd -S myServer\instanceName -i C:\myScript.sql -o C:\EmpAdds.txt
  3. Нажмите клавишу ВВОД.

Результат не будет выведен в окне командной строки. Он будет записан в файл EmpAdds.txt. Можно проверить полученные результаты, открыв файл EmpAdds.txt.

## Дальнейшие действия

  • Запуск программы sqlcmd
  • Служебная программа Sqlcmd

Как запустить файл sql

Buy this Reference Manual in softcover from Barnes & Noble!

4.8.10 Как запускать SQL-команды из текстового файла

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

shell> mysql database

Однако вполне можно поместить SQL команды в текстовый файл и указать mysql считывать входные данные из этого файла. Для этого необходимо создать текстовый файл text_file , содержащий команды, которые предстоит выполнить. Затем запускаем mysql как показано ниже:

shell> mysql database < text_file

Можно также запустить текстовый файл с командой USE db_name . В этом случае указывать имя базы данных в командной строке не обязательно:

shell> mysql < text_file

Если программ а mysql уже работает, можно запустить файл с SQL-сценарием, используя команду source :

mysql> source filename;

Более подробная информация по пакетному режиму работы находится в разделе See section 3.6 Использование mysql в пакетном режиме.

User Comments

Posted by [name withheld] on Friday May 17 2002, @6:24am [Delete] [Edit]

For gzipped files:

gunzip -c file.gz | mysql database

Posted by Ken Ingram on Tuesday July 23 2002, @2:31pm [Delete] [Edit]

Yes, you can run a script from the MySQL command
line by typing "\. "

Posted by Adam Hardy on Friday May 17 2002, @6:24am [Delete] [Edit]

Is it possible to execute a SQL script file when
you are already in the mysql prompt?

MySQL.com home | Site map | Contact us | Press | Jobs | Privacy policy | Trademark info | © 1995-2003 MySQL AB. All rights reserved.

Как запустить SQL скрипт в MySQL?

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

mysql> source \home\user\Desktop\test.sql; 

Thomas Edwards 20 янв. 2012, в 12:37
Поделиться
Для mysql 5.6.10 на Mac не нужны одинарные кавычки для пути к файлу.
RNA 13 июль 2013, в 00:39
@ РНК спасибо . одиночная кавычка вызывает проблемы ..
kzs 06 нояб. 2013, в 07:09

для окон, использование '/' вместо '\' работало правильно для меня. Я получил ошибки, когда я первоначально использовал «/». Это то, что сработало для меня . источник C: /Users/macombers/Downloads/midcoast_db.sql;

Zack Macomber 03 окт. 2014, в 15:09

Также удалите кавычки в Ubuntu (mysql Ver 14.14 debian-linux-gnu (x86_64) с использованием оболочки EditLine)

Siddhartha 20 апр. 2015, в 23:37
Что делать, если у вас нет разрешений? Есть ли способ запустить sudo?
CMCDragonkai 13 май 2015, в 13:57

@CMCDragonkai Я скопировал бы файл в место, к которому вы можете получить к нему доступ, или сменил владельца, а затем использовал бы его.

Thomas Edwards 09 июнь 2015, в 23:12
Есть ли способ указать относительный путь, чем ввести полный абсолютный путь?
kapil 22 дек. 2016, в 17:23

@kapil Относительно чего? На данный момент вы находитесь внутри MySQL, поэтому я боюсь, что нет родственника.

Thomas Edwards 11 март 2017, в 00:23

@kapil Я знаю, что это сообщение довольно старое, но если вы находитесь в папке, в которой находится ваш скрипт, прежде чем вы запустите mysql, вам не нужно вводить полный путь.

Colby 03 март 2019, в 03:44
Показать ещё 7 комментариев

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

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

Eugen Rieck 20 янв. 2012, в 12:01
Поделиться
Как насчет пароля пользователя (опция -p)?
Amir Katz 22 янв. 2018, в 16:15

@AmirKatz Хотя пароль можно задать с помощью параметра -p , это не рекомендуется: другие пользователи на том же хосте могут использовать системные инструменты, такие как ps для его чтения в этом случае.

Eugen Rieck 22 янв. 2018, в 16:16
@EugenRieck -p без аргумента предлагает ввести пароль на следующей строке
Bobby Jack 12 нояб. 2018, в 12:28
Показать ещё 1 комментарий

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

mysql -u yourusername -p yourpassword yourdatabase < text_file 

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

mysql -u yourusername -p yourpassword yourdatabase 
mysql>CREATE DATABASE a_new_database_name 
mysql -u yourusername -p yourpassword a_new_database_name < text_file 

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

Paul Preibisch 26 апр. 2013, в 05:21
Поделиться

в Windows: для пароля мне пришлось использовать кавычки и пробел, чтобы он работал (сам пароль не содержал пробелов и специальных символов): mysql -u yourusername -p"yourpassword"

TmTron 11 сен. 2014, в 12:18

Если вы не хотите, чтобы ваш пароль отображался в приглашении, я полагаю, что описанный здесь метод будет работать: stackoverflow.com/questions/9293042/…

alex9311 04 фев. 2016, в 09:32

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

mysql -u yourusername -p yourpassword yourdatabase < query_file >results_file 

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

Bhushan 01 апр. 2015, в 20:07
Поделиться
Я думаю, что не должно быть пробела между -p и паролем
webNeat 21 фев. 2016, в 21:50
Пространство / нет места, оба работают
Bhushan 22 фев. 2016, в 08:12

Если целью записи в файл является получение дампа данных, я думаю, SELECT . INTO OUTFILE /path/to/file.csv является более эффективным способом. Смотрите параметры и синтаксис здесь - dev.mysql.com/doc/refman/5.7/en/select-into.html

Anis 21 фев. 2018, в 06:43
Показать ещё 1 комментарий

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

 mysql --user="username" --database="databasename" --password="yourpassword" < "filepath" 

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

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

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

talsibony 17 дек. 2014, в 09:21
Поделиться

Я бы не рекомендовал передавать пароль в командную строку, так как он будет сохранен в ~ / .bash_history и может быть доступен для других программ через / proc /.

elcuco 13 май 2015, в 10:10

Отличный совет от @elcuco! Также, возможно, используйте другой флаг после -p (или укажите последний аргумент), чтобы другой параметр не был ошибочно принят за предполагаемый пароль.

davernator 26 май 2018, в 01:48
@ Elcuco см редактировать
talsibony 28 май 2018, в 13:13

Обратите внимание, что аргументы командной строки по-прежнему видны другим пользователям. Пример: для меня в / proc / * / cmdline; сделать эхо $ я; кот $ я; сделанный

elcuco 25 июль 2018, в 07:30
Это НЕ РЕКОМЕНДУЕТСЯ, так как вы выставляете пароль своих серверов в истории консоли.
Alexius Diakogiannis 04 март 2019, в 09:05
Спасибо можете пожалуйста приведите пример
talsibony 05 март 2019, в 17:23

@AlexiusDiakogiannis Можете ли вы дать мне пример, как вы можете просмотреть команду из истории, когда вы выполняете ее с [пробел] перед командой?

talsibony 07 март 2019, в 10:04

@talsibony Это действительно плохая практика. Чтобы быть уверенным, что ваша команда не будет отображаться в истории, вам сначала нужно проверить значение переменной окружения HISTCONTROL. Если и только если значение содержит ignorespace или ignoreboth, то любая команда, начинающаяся с пробела, не будет добавлена в историю команд.

Alexius Diakogiannis 18 март 2019, в 10:04

@AlexiusDiakogiannis и elcuco - это редактирование, теперь вы можете охладить пароль, который не будет сохранен в истории в редактируемой версии.

talsibony 18 март 2019, в 11:49
Показать ещё 7 комментариев

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

source c:/dump/SQL/file_name.sql; 

Изображение 863

Shubham Verma 05 янв. 2017, в 17:17
Поделиться

mysql> source C:\Users\admin\Desktop\fn_Split.sql 

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

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

mysql> source C:\fn_Split.sql 

Shankar Kalyankar 09 март 2015, в 08:38
Поделиться

Никогда не рекомендуется передавать аргумент пароля непосредственно из командной строки, он сохраняется в файле ~/.bash_history и может быть доступен из других приложений.

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

mysql -u user --host host --port 9999 database_name < /scripts/script.sql -p Enter password: 

Jorge E. Hernández 03 фев. 2017, в 05:49
Поделиться

mysql -uusername -ppassword database-name < file.sql 

Мартин Петров 08 фев. 2017, в 17:11
Поделиться

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

 \home\sivakumar\Desktop\test.sql 
 /home/sivakumar/Desktop/test.sql 

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

source /home/sivakumar/Desktop/test.sql 

Ben Lin 03 сен. 2013, в 22:58
Поделиться

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

source \\home\\user\\Desktop\\test.sql; 

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

Rajesh Paul 28 сен. 2013, в 18:41
Поделиться

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

  1. Доступ к mysql с использованием:
  1. В командной строке mysql введите:

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

Zac Smith 07 сен. 2016, в 02:48
Поделиться

Вместо запуска приглашения может быть даже полезно объединить два шага в одну команду: mysql -u -p -e 'source filename.sql'

junix 14 май 2018, в 11:33
Спасибо, @junix! Опция источника, использованная таким образом, - это то, что я искал.
ManuelJE 19 фев. 2019, в 16:24

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

MySQL → source c://path_to_file//path_to_file//file_name.sql;

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

Chad Mx 25 июнь 2015, в 03:20
Поделиться

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

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

mysql --host=localhost --user=your_username --password=your_password your_database_name < pathTofilename.sql 

Display Name 07 авг. 2014, в 14:56
Поделиться

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

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

user3753416 07 авг. 2015, в 15:46
Поделиться

Вы можете использовать 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 и использовать < оператор перенаправления ввода, чтобы указать файл для чтения ввода запроса:

shell > mysql db_name < входной_файл

Как запустить SQL сценарий сразу на нескольких БД

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

1. Для этого используйте следующий подход:

Включаем режим SQL CMD в SSMS: Options / query execution / sql server / common / Open SQL CMD Mode checkbox

2. Сохраняем пакет SQL в файл

3. Готовим такой скрипт:

USE db1; :r C:\temp\1.sql GO USE db2; :r C:\temp\1.sql GO USE db3; :r C:\temp\1.sql GO 

Таким образом подготовив 1 раз шаблон подобного скрипта можно обновлять скрипты на множестве баз данных.

  • https://www.sqlshack.com/use-sqlcmd-commands-ssms-query-editor/
  • https://stackoverflow.com/questions/2998954/test-if-a-property-is-available-on-a-dynamic-variable

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

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