Ответ 1
Если вы в командной строке MySQL mysql>
, вам нужно объявить файл SQL как source
.
mysql> source \home\user\Desktop\test.sql;
Я хочу выполнить текстовый файл, содержащий запросы SQL, в MySQL.
Я попытался запустить source/Desktop/test.sql
и получил ошибку:
mysql>. \home\sivakumar\Desktop\test.sql ОШИБКА: не удалось открыть файл '\ home\sivakumar\Desktop\test.sql', ошибка: 2
Есть идеи, что я делаю не так?
Если вы в командной строке MySQL mysql>
, вам нужно объявить файл SQL как source
.
mysql> source \home\user\Desktop\test.sql;
У вас довольно много вариантов:
mysql -h hostname -u user database < path/to/test.sql
вы можете выполнить инструкции 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
Все лучшие ответы хороши. Но на всякий случай кто-то хочет запустить запрос из текстового файла на удаленном сервере И сохранить результаты в файл (вместо показа на консоли), вы можете сделать это:
mysql -u yourusername -p yourpassword yourdatabase < query_file > results_file
Надеюсь, это поможет кому-то.
Мой любимый вариант сделать это будет:
mysql --user="username" --database="databasename" --password="yourpassword" < "filepath"
Я использую это таким образом, потому что, когда вы связываете это с "", вы избегаете неправильного пути и ошибок с пробелами и - и, возможно, больше проблем с символами, с которыми я не сталкивался.
С комментарием @elcuco я предлагаю использовать эту команду вместе с [пробелом], поэтому она говорит bash игнорировать сохранение в истории, это будет работать из коробки в большинстве bash.
если ваша команда все еще сохраняется в истории, просмотрите следующие решения:
Выполнить команду, не сохраняя ее в истории
дополнительная безопасность редактирования
На всякий случай, если вы хотите быть более безопасным, вы можете использовать следующую команду и ввести пароль в командной строке:
mysql --user="username" --database="databasename" -p < "filepath"
Я пришел сюда, ища этот ответ, и вот что я нашел, работает для меня лучше: Примечание. Я использую Ubuntu 16.xx
mysql -u <your_user> - p
source file_name.sql
Надеюсь это поможет.
Укажите путь к файлу .sql как:
source c:/dump/SQL/file_name.sql;
mysql> source C:\Users\admin\Desktop\fn_Split.sql
Не указывать одинарные кавычки.
Если приведенная выше команда не работает, скопируйте файл на диск c: и повторите попытку. как показано ниже,
mysql> source C:\fn_Split.sql
Никогда не рекомендуется передавать аргумент пароля непосредственно из командной строки, он сохраняется в файле ~/.bash_history
и может быть доступен из других приложений.
Используйте это вместо:
mysql -u user --host host --port 9999 database_name < /scripts/script.sql -p
Enter password:
mysql -uusername -ppassword database-name < file.sql
Скорее всего, вам просто нужно изменить косую черту /blackslash: от
\home\sivakumar\Desktop\test.sql
к
/home/sivakumar/Desktop/test.sql
Таким образом, команда будет следующей:
source /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 для имени файла, и если ваша версия настаивает на полуколонах, убедитесь в этом и повторите попытку.
вместо перенаправления я бы сделал следующее
mysql -h <hostname> -u <username> --password=<password> -D <database> -e 'source <path-to-sql-file>'
Это выполнит файл path-to-sql-file
У меня была эта ошибка, и я пробовал все советы, которые я мог получить безрезультатно.
Наконец, проблема заключалась в том, что в моей папке было место в имени папки, которое отображается как прямая-косая черта в пути к папке, после того как я нашел и удалил его, он работал нормально.
Так много способов сделать это.
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.
Надеюсь, что это полезно, а не просто излишне.
Вы можете использовать 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 < входной_файл