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

Skip to content

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

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

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

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

Ответ 1

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

mysql> source \home\user\Desktop\test.sql;
Ответ 2

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

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

вы можете выполнить инструкции 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

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

Дополнительная информация здесь: http://dev. mysql.com/doc/refman/5.0/en/mysql-batch-commands.html

Ответ 4

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

И сохранить результаты в файл (вместо показа на консоли), вы можете сделать это:

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

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

Ответ 5

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

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

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


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

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

Выполнить команду, не сохраняя ее в истории


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

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

mysql --user="username" --database="databasename" -p < "filepath"
Ответ 6

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

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

mysql -u <your_user> - p

  1. В командной строке mysql введите:

source file_name.sql

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

Ответ 7

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

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

Ответ 8
mysql> source C:\Users\admin\Desktop\fn_Split. sql

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

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

mysql> source C:\fn_Split.sql
Ответ 9

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

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

mysql -u user --host host --port 9999 database_name < /scripts/script.sql -p
Enter password:
Ответ 10
mysql -uusername -ppassword database-name < file.sql
Ответ 11

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

 \home\sivakumar\Desktop\test.sql

к

 /home/sivakumar/Desktop/test.sql

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

source /home/sivakumar/Desktop/test.sql
Ответ 12

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

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

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

Ответ 13

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

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

Тогда:

mysql --host=localhost --user=your_username --password=your_password your_database_name < pathTofilename.sql
Ответ 14

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

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

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

Ответ 15

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

mysql -h <hostname> -u <username> --password=<password> -D <database> -e 'source <path-to-sql-file>'

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

Ответ 16

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

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

Ответ 17

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

From Workbench: File > Run SQL Script -- then follow prompts
From Windows Command Line:
   Option 1: mysql -u usr -p
             mysql> source file_path.sql
   Option 2: mysql -u usr -p -e source file_path.sql
   Option 3: mysql -u usr -p < file_path.sql
   Option 4: put multiple 'source' statements inside of file_path.sql (I do this to drop and recreate schemas/databases which requires multiple files to be run)
             mysql -u usr -p < file_path. sql

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

cd {!!>>mysqld.exe home directory here<<!!}
mysqld.exe --initialize 

Это должно быть выполнено из каталога 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;

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

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

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

Служебная программа Sqlcmd — запуск файлов скриптов Transact-SQL — SQL Server

Twitter LinkedIn Facebook Адрес электронной почты

  • Статья
  • Чтение занимает 2 мин

Применимо к: SQL Server Azure SQL DatabaseУправляемый экземпляр SQL AzureAzure Synapse Analytics AnalyticsPlatform System (PDW)

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

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

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

  1. Выберите Пуск, Все программы, Стандартные и Блокнот.

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

    USE AdventureWorks2012;
    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
    
  3. Сохраните файл под именем myScript. sql на диске C.

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

  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 в MySQL?

спросил

Изменено 5 месяцев назад

Просмотрено 1,1 млн раз

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

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

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

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

  • mysql
  • командная строка

2

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

 mysql> источник \home\user\Desktop\test.sql;
 

12

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

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

3

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

 mysql -u ваше имя пользователя -p ваш пароль ваша база данных < текстовый файл
 

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

 mysql -u ваше имя пользователя -p ваш пароль
 

затем:

 mysql>СОЗДАТЬ БАЗУ ДАННЫХ a_new_database_name
 

затем:

 mysql -u ваше имя пользователя -p ваш пароль a_new_database_name < text_file
 

так и должно быть!

Подробнее здесь: http://dev. mysql.com/doc/refman/5.0/en/mysql-batch-commands.html

3

Мой любимый вариант для этого:

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

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


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

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

Выполнить команду, не сохраняя ее в истории


дополнительное изменение безопасности

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

 mysql --user="username" --database="databasename" -p < "filepath"
 

9

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

 mysql -u ваше имя пользователя -p ваш пароль ваша база данных < файл_запроса > файл_результатов
 

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

2

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

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

mysql -u - p

  1. В командной строке mysql введите:

исходный файл имя_файла.sql

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

2

Укажите путь к файлу .sql следующим образом:

 источник c:/dump/SQL/имя_файла. sql;
 

1

 mysql> источник C:\Users\admin\Desktop\fn_Split.sql
 

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

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

 mysql> источник C:\fn_Split.sql
 

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

 mysql -h  -u  --password= -D  -e 'source '
 

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

 mysql -uusername -ppassword имя-базы-данных < file.sql
 

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

Вместо этого используйте это:

 mysql -u пользователь --host host --port 9999 имя_базы_данных < /scripts/script.sql -p
Введите пароль:
 

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

 Из Workbench: Файл > Запустить сценарий SQL — затем следуйте инструкциям
Из командной строки Windows:
   Вариант 1: mysql -u usr -p
             mysql> исходный файл_path.sql
   Вариант 2: mysql -u usr -p '-e исходный путь к файлу.sql'
   Вариант 3: mysql -u usr -p < file_path.sql
   Вариант 4: поместите несколько «исходных» операторов внутри file_path.sql (я делаю это, чтобы удалить и воссоздать схемы/базы данных, которые требуют запуска нескольких файлов)
             mysql -u usr -p < путь_к_файлу.sql
 

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

 cd {!!>>здесь домашний каталог mysqld.exe<

Это должно быть запущено из каталога mysqld.exe, следовательно, с компакт-диска.

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

1

От linux 14.04 до MySql 5.7 с использованием команды cat , переданной с помощью входа в mysql:

 cat /Desktop/test. sql | судо mysql -uroot -p
 

Этот метод можно использовать для выполнения многих команд MySQL непосредственно из Shell. Например:

 echo "ИСПОЛЬЗОВАТЬ my_db; ПОКАЗАТЬ таблицы;" | судо mysql -uroot -p
 

Обязательно разделяйте команды точкой с запятой (';').

Я не видел такого подхода в ответах выше и подумал, что это хороший вклад.

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

 \home\sivakumar\Desktop\test.sql
 

-

 /home/sivakumar/Desktop/test.sql
 

Таким образом, команда будет выглядеть так:

 источник /home/sivakumar/Desktop/test.sql
 

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

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

Без кавычек. Даже если путь содержит пробел (' ') , используйте вообще без кавычек .

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

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

Затем:

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

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

mysql>> source c://path_to_file//path_to_file//file_name.sql;

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

1

Если вы здесь ИЩЕТЕ СРЕДУ DRUPAL

Вы можете запустить команду drush в каталоге вашего проекта

 drush sqlc
 

Если вы пытаетесь выполнить эту команду:

 mysql -u root -proot -D database < /path/to/script. sql
 

Вы можете получить такое сообщение об ошибке: если у вас есть специальные символы, в основном '`'

 ОШИБКА 1064 (42000) в строке 1: у вас есть ошибка в синтаксисе SQL; проверьте руководство, соответствующее версии вашего сервера MySQL, для правильного синтаксиса для использования рядом с «/path/to/script.sql» в строке 1.
 

Поэтому я бы предложил использовать такую ​​команду:

 echo "source /path/to/script.sql" | mysql -u root -proot -D база данных
 

Эта команда выполнит source /path/to/script.sql после подключения к серверу, на котором выполняется ваш скрипт.

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

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

Я использую Bash Here Strings для мгновенного выполнения SQL:

 mysql -uroot -p <<<"select date(now())"
 

https://www. gnu.org/software/bash/manual/html_node/Redirections.html#Here-Strings

Как выполнить файл SQL с помощью инструмента командной строки MySQL?

спросил

Изменено 7 лет, 2 месяца назад

Просмотрено 39 тысяч раз

Я использую symfony, putty и другие команды SQL, кажется, работают нормально, но когда я пытаюсь запустить файл .sql (которых много), командная строка выдает ошибку:

 У вас есть ошибка в вашем синтаксисе SQL; смотри мануал...
 

Это команда, которую я пытаюсь выполнить:

 mysql < data/MySQLFile.sql;
 

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

Вот инструкция:

 ALTER TABLE имя_таблицы
    ДОБАВИТЬ СТОЛБЦ `blahblah` varchar(10) NULL;
ИЗМЕНИТЬ ТАБЛИЦУ имя_таблицы
    ДОБАВИТЬ СТОЛБЦ `gggggg` varchar(50) NULL;
 
  • mysql
  • sql
  • командная строка

8

, если вы хотите выполнить через командную строку

mysql -u user -p < file.sql

и если вы хотите выполнить после входа в базу данных mysql. используйте любую из приведенных ниже команд.

 исходный файл.sql
 

или

\. file.sql

или

 mysql db_name 

Хорошо, если вы находитесь в интерфейсе mysql, уже введите:

 \. /полный путь/к/file.sql
 

Что я имел в виду под полным путем, так это то, что вам нужно указать местоположение файла в соответствии с текущей файловой системой ОС. Просто поставить data/ недостаточно. Например, если вы используете MAC OS, это будет: Из терминала и предполагая, что находится в Документах:

 mysql < /Users//Documents/file.