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

261

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

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

mysql> . \home\sivakumar\Desktop\test.sql ERROR: Failed to open file '\home\sivakumar\Desktop\test.sql', error: 2
Теги:
command-line

16 ответов

302

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

mysql> source \home\user\Desktop\test.sql;
  • 28
    Для mysql 5.6.10 на Mac не нужны одинарные кавычки для пути к файлу.
  • 6
    @ РНК спасибо ... одиночная кавычка вызывает проблемы ..
Показать ещё 7 комментариев
107

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

  • используйте клиент командной строки MySQL: mysql -h hostname -u user database < path/to/test.sql
  • Установите инструменты GUI MySQL и откройте свой файл SQL, затем выполните его
  • Используйте phpmysql, если база данных доступна через ваш веб-сервер
  • 1
    Как насчет пароля пользователя (опция -p)?
  • 0
    @AmirKatz Хотя пароль можно задать с помощью параметра -p , это не рекомендуется: другие пользователи на том же хосте могут использовать системные инструменты, такие как ps для его чтения в этом случае.
Показать ещё 1 комментарий
98

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

  • 5
    в Windows: для пароля мне пришлось использовать кавычки и пробел, чтобы он работал (сам пароль не содержал пробелов и специальных символов): mysql -u yourusername -p"yourpassword"
  • 0
    Если вы не хотите, чтобы ваш пароль отображался в приглашении, я полагаю, что описанный здесь метод будет работать: stackoverflow.com/questions/9293042/…
38

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

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

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

  • 7
    Я думаю, что не должно быть пробела между -p и паролем
  • 0
    Пространство / нет места, оба работают
Показать ещё 1 комментарий
19

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

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

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


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

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

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

  • 12
    Я бы не рекомендовал передавать пароль в командную строку, так как он будет сохранен в ~ / .bash_history и может быть доступен для других программ через / proc /.
  • 0
    Отличный совет от @elcuco! Также, возможно, используйте другой флаг после -p (или укажите последний аргумент), чтобы другой параметр не был ошибочно принят за предполагаемый пароль.
Показать ещё 7 комментариев
11

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

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

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

11
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:
6
mysql -uusername -ppassword database-name < file.sql
6

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

 \home\sivakumar\Desktop\test.sql

к

 /home/sivakumar/Desktop/test.sql

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

source /home/sivakumar/Desktop/test.sql
5

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

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

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

4

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

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

mysql -u <your_user> - p

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

source file_name.sql

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

  • 1
    Вместо запуска приглашения может быть даже полезно объединить два шага в одну команду: mysql -u<user> -p -e 'source filename.sql'
  • 0
    Спасибо, @junix! Опция источника, использованная таким образом, - это то, что я искал.
2

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

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

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

2

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

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

Тогда:

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

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

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

-1

Вы можете использовать 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 < входной_файл

Ещё вопросы

Сообщество Overcoder
Наверх
Меню