Как запустить SQL скрипт в MySQL? - PullRequest
332 голосов
/ 20 января 2012

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

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

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

Есть идеи о том, что я делаю неправильно?

Ответы [ 16 ]

373 голосов
/ 20 января 2012

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

mysql> source \home\user\Desktop\test.sql;
129 голосов
/ 20 января 2012

У вас достаточно вариантов:

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

Вы можете выполнить операторы 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

44 голосов
/ 01 апреля 2015

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

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

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

39 голосов
/ 17 декабря 2014

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

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

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


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

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

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


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

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

mysql --user="username" --database="databasename" -p < "filepath"
15 голосов
/ 05 января 2017

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

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

See In The Image:

15 голосов
/ 07 сентября 2016

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

  1. Доступ к MySQL с помощью:

mysql -u <your_user> - p

В приглашении mysql введите:

source file_name.sql

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

14 голосов
/ 09 марта 2015
mysql> source C:\Users\admin\Desktop\fn_Split.sql

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

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

mysql> source C:\fn_Split.sql
11 голосов
/ 03 февраля 2017

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

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

mysql -u user --host host --port 9999 database_name < /scripts/script.sql -p
Enter password:
9 голосов
/ 08 февраля 2017
mysql -uusername -ppassword database-name < file.sql
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...