How to run SQL script in MySQL?
I want to execute a text file containing SQL queries, in MySQL.
I tried to run source /Desktop/test.sql and received the error:
mysql> . \home\sivakumar\Desktop\test.sql ERROR: Failed to open file ‘\home\sivakumar\Desktop\test.sql’, error: 2
Any idea on what I am doing wrong?
![]()
21 Answers 21
If you’re at the MySQL command line mysql> you have to declare the SQL file as source .
![]()
You have quite a lot of options:
- use the MySQL command line client: mysql -h hostname -u user database < path/to/test.sql
- Install the MySQL GUI tools and open your SQL file, then execute it
- Use phpmysql if the database is available via your webserver
you can execute mysql statements that have been written in a text file using the following command:
if your database has not been created yet, log into your mysql first using:
that should do it!
My favorite option to do that will be:
I use it this way because when you string it with «» you avoiding wrong path and mistakes with spaces and — and probably more problems with chars that I did not encounter with.
With @elcuco comment I suggest using this command with [space] before so it tell bash to ignore saving it in history, this will work out of the box in most bash.
in case it still saving your command in history please view the following solutions:
extra security edit
Just in case you want to be extra safe you can use the following command and enter the password in the command line input:
Как запустить SQL скрипт в MySQL?
Я новичок в MySQL. Я хочу выполнить текстовый файл, содержащий SQL-запросы.
Я попытался запустить source /Desktop/test.sql и получил ошибку,
16 ответов
Если вы в командной строке MySQL mysql> , вам нужно объявить файл SQL как source .
У вас довольно много вариантов:
- используйте клиент командной строки MySQL: mysql -h hostname -u user database < path/to/test.sql
- Установите инструменты GUI MySQL и откройте свой файл SQL, затем выполните его
- Используйте phpmysql, если база данных доступна через ваш веб-сервер
вы можете выполнить инструкции mysql, которые были записаны в текстовом файле, используя следующую команду:
если ваша база данных еще не создана, сначала войдите в свой mysql, используя:
который должен это сделать!
Все лучшие ответы хороши. Но на всякий случай кто-то хочет запустить запрос из текстового файла на удаленном сервере И сохранить результаты в файл (вместо показа на консоли), вы можете сделать это:
Надеюсь, это поможет кому-то.
Мой любимый вариант сделать это будет:
Я использую его таким образом, потому что, когда вы привязываете его к «», вы избегаете неправильного пути и ошибок с пробелами и — и, вероятно, больше проблем с символами, с которыми я не сталкивался.
С комментарием @elcuco я предлагаю использовать эту команду с [пробелом] до того, как она сообщит bash игнорировать ее сохранение в истории, это будет работать из коробки в большинстве bash.
в случае сохранения в истории вашей команды в истории, просмотрите следующие решения:
/ .bash_history и может быть доступен для других программ через / proc /.
Укажите путь к файлу .sql как:

Не указывать одинарные кавычки.
Если приведенная выше команда не работает, скопируйте файл на диск c: и повторите попытку. как показано ниже,
Никогда не рекомендуется передавать аргумент пароля непосредственно из командной строки, он сохраняется в файле
/.bash_history и может быть доступен из других приложений.
Используйте это вместо:
Скорее всего, вам просто нужно изменить косую черту /blackslash: от
Таким образом, команда будет следующей:
используйте следующее из командной строки mysql —
Не используйте цитату. Даже если путь содержит пробел (»), используйте никакую цитату вообще.
Я пришел сюда, ища этот ответ, и вот что я нашел, работает для меня лучше: Примечание. Я использую Ubuntu 16.xx
- Доступ к mysql с использованием:
mysql -u <your_user> — p
- В командной строке mysql введите:
Надеюсь это поможет.
В будущем, я нашел, что это работает против вышеупомянутых методов под Windows в консоли msql:
MySQL → source c://path_to_file//path_to_file//file_name.sql;
Если ваш корневой диск не называется «c», тогда просто обменивайтесь тем, что вы вызываете. Сначала попробуйте обратную косую черту, если они не работают, попробуйте косую черту. Если они также не работают, убедитесь, что у вас есть полный путь к файлу, расширение .sql для имени файла, и если ваша версия настаивает на полуколонах, убедитесь в этом и повторите попытку.
Так как mysql -u yourusername -p yourpassword yourdatabase < text_file не работал на удаленном сервере (Amazon EC2).
Сначала убедитесь, что база данных создана.
У меня была эта ошибка, и я пробовал все советы, которые я мог получить безрезультатно.
Наконец, проблема заключалась в том, что в моей папке было место в имени папки, которое отображается как прямая-косая черта в пути к папке, после того как я нашел и удалил его, он работал нормально.
Вы можете использовать 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 и использовать < оператор перенаправления ввода, чтобы указать файл для чтения ввода запроса:
Как запустить файл sql
Обычно клиент mysql используется в интерактивном режиме, например, следующим образом:
Однако вполне можно поместить SQL команды в текстовый файл и указать mysql считывать входные данные из этого файла. Для этого необходимо создать текстовый файл text_file , содержащий команды, которые предстоит выполнить. Затем запускаем mysql как показано ниже:
Можно также запустить текстовый файл с командой USE db_name . В этом случае указывать имя базы данных в командной строке не обязательно:
Если программ а mysql уже работает, можно запустить файл с SQL-сценарием, используя команду source :
Более подробная информация по пакетному режиму работы находится в разделе See section 3.6 Использование mysql в пакетном режиме.
Технология SQL-файл, препроцессор для T-SQL, “бок-о-бок” файлы и др
Завершив в недавнем прошлом очередную доработку своей легковесной технологии SQL-файл, применяемой для эффективной трансляции файлового SQL-кода в базу данных, автор данной статьи решил в очередной раз представить (в этой заметке теперь, на популярном ресурсе) свои реализованные, хотя бы отчасти, идеи касательно программирования MSSQL, а так же некоторые соображения относительно применения SQL вообще. Автор полагает, что несмотря на форму предлагаемой им частной реализации SQL-файл (для MSSQL), лежащая в основе подхода концепция имеет определённую силу и смысл.
Введение
Язык SQL (его основа), а также средства поддержки SQL придумывались давно. Классические серверы реляционных БД, как правило, не допускают прямого размещения файлов исходного кода запросов на сервере; например, в специальных директориях БД, подобно тому, как, к примеру, на веб-сервере можно выложить JS, HTML, CSS и т. п. (В реляционной СУБД всё весьма консервативно, присутствует множество серьёзных ограничений.) Вместо этого клиент SQL-сервера имеет доступ к механизму манипулирования объектами БД и сервера (путём отправки пакетов инструкций SQL). С помощью специальной (как правило графической) консоли БД создаётся подобие редактирования исходников сохраняемых в БД объектов. Собираясь же по определённым причинам переходить (всецело) на файловую базу для хранения скриптов Вы можете обнаружить недостаточную поддержку работы с подобными файлами-скриптами со стороны клиентских инструментов разработки SQL. Представленная же здесь (в статье) легковесная технология SQL-файл ориентирована как раз на файловую базу для размещения исходников, в директориях и файлах SQL, для SQL-объектов БД: таблицы (скрипты их создания), индексы, ограничения (constraint), хранимые процедуры (ХП), функции и т. п.
Описывая в общих чертах и отдельных деталях конкретное исполнение идей, статья, в то же время, содержит элементы некоторого вымысла (фантастики), нацеленные на обретение теоретического видения касательно применения различных диалектов языка SQL, в плане предлагаемого общего знаменателя (для доступа к SQL-запросам), отражённого здесь путём привнесения соответствующих терминов: Заголовок SQL-запроса (формат, подлежащий унификации), Компилируемый временный запрос к SQL-серверу (допускает определённую унификацию) и прочее. Непривычный взгляд на взаимодействие с SQL-сервером позволяет, однако, не быть обязанным к общению с т. н. большой ORM (Object-Relational Mapping), иметь свободу интенсивно задействовать программирование внутри базы данных (функции, вспомогательные ХП и прочее), при этом логически разделяя запрос к веб-серверу на универсальные части-составляющие: (1) Составляющая SQL-сервера (условно открытый SQL-заголовок + реализация); (2) Составляющая веб-сервера (декларация API + имплементация); (3) Клиентская составляющая (в основном определения для использования запроса). Наличие разнородных сред и языков программирования для исполнения одного, казалось бы простого, запроса клиента создаёт препятствие для гладкой его реализации. Сложности же, вызываемые двойственной природой реализуемого запроса (SQL-сервер + веб-сервер) навряд ли подлежат существенному устранению, учитывая даже применение, так скажем, идеальной (максимальной) ORM.
В последующих текстах присутствует определённое количество специфических наименований, а так же сверхкоротких фрагментов из соответствующих скриптов и конфигурационных файлов (т. н. инишник-и, батч-и и т. п.). Можно особо не заострять на них внимание; они тут изобильно приводятся в основном с той целью, чтобы показать, что поведение т. н. SQL-трансляции (файлы => объекты SQL) подлежит конфигурированию, настраивается и доступно для управления. Так же, не следует ассоциировать применение файлового коммандер-а, процессора CMD и т. п. с какой бы то ни было отсталостью. Автономный проект (компиляция) SQL-файл, по ощущениям автора имеет, в каком-то смысле, схожие черты с автономными проектами в универсальной кроссплатформенной среде разработки VS-Code (конфигурирование, задачи, запуски и т. п.). Файловый же коммандер (здесь это, как правило, Far Manager) вкупе со сценариями обработки (здесь это в основном CMD) хорошо подходят для реализации автономного, независимого от привязок к фирменным IDE, компилируемого проекта.
Касательно же недостатков интеграции SQL-файл с Far Manager, стоит отметить отсутствие какой-либо функции автодополнения при редактировании SQL, в отличие, например, от задействования технологии IntelliSense в Visual Studio. В SQL-файл подобное редактирование (с “равнением” на коллекцию имён из базы данных в данном случае) доступно через т. н. IDE-стартер SSMS.cmd, что, однако, также имеет свои ограничения, выражающиеся, в первую очередь, в “замораживании” всего окружения (переменные среды) на моменте старта IDE (и не только это).
Минимальная формулировка назначения и замысла SQL-файл:
Когда-то, презентуя впервые свою методику взаимодействия с СУБД SQL Server, автор данной статьи писал (в прошлом) примерно следующее:
Добрый день, уважаемые разработчики SQL!
Позвольте представить Вашему вниманию самодельную легковесную технологию, именуемую как SQL-файл (или же SQL в файлах), — для MSSQL и T-SQL. Данная методика успешно применялась в течение достаточно долгого периода для программирования БД расчёта квартирной платы (город Воронеж). Технология базируются на известной утилите SQLCMD и командном процессоре CMD. В качестве IDE (командный пульт SQL + оперативный редактор) эффективно применяется Far Manager 3, со вспомогательными простейшим плагином и макросами. (Так же, возможно задействование других редакторов SQL, помимо встроенного в FAR.)
Идея состоит в том, чтобы поддерживать исходный код и/или вспомогательные скрипты в виде SQL-файлов в директориях, транслируя их в базу данных, по отдельности либо группами. Используя утилиту $SQLTRANS и соответствующие шаблоны, можно настроить трансляцию (генерацию) большого количества объектов БД, работающую, так сказать, на раз-два-три. За один приём, например, возможно обновить активную составляющую программы в базе (процедуры, функции, представления, …), или, скажем, создать табличную структуру (и наполнить её некоторым количеством необходимых данных). При умелом обращении подсистема (активные объекты) может вполне свободно корректироваться даже на работающей программе/службе.
Обзорное минимальное описание SQL-файл доступно на страницах Handicraft-CODE (англ. язык): https://handicraft.remelias.ru/sdk/sql_file.html (Handicraft-CODE :: Handicraft-SDK :: SQL-file technology); https://handicraft.remelias.ru/sdk/sql_tools.html (Handicraft-CODE :: Handicraft-SDK :: CMD-utilities :: SQL-tools).
А так же, см. скриншот-ы: https://handicraft.remelias.ru/sdk/sql/screenshots_1.html; https://handicraft.remelias.ru/sdk/sql/screenshots_2.html; https://handicraft.remelias.ru/sdk/sql/screenshots_3.html.
Вместе с командными утилитами и шаблонами предлагается возможное (опционально) использование так называемого Усиленного Transact-SQL, с препроцессором (на базе переменных среды), представленного множеством соответствующих импорт-определений и широким набором хелпер-объектов прилагаемой библиотеки SQLAUX (полезные программатик-и).
: : : : : : : : : :
Спасибо за внимание!
I. Предыстория (что не так с языком Transact-SQL, расширения SQLCMD и др.)
Автор данной статьи в течение долгого времени имел дело с СУБД MS SQL Server. Когда-то в прошлом к автору пришло осознание того, что режим исполнения инструкций (Control Flow) в языке Transact-SQL, который MSSQL предлагает по умолчанию (режим), не является надёжным. Без использования специальных блоков-обёрток для перехвата исключения — необходимо везде-везде проверять состояние последней ошибки @@ERROR . Исходя из желания использовать эффективный (полуавтоматический, с исключениями) контроль ошибок, а так же и по другим (тоже веским) причинам, в течение длительного времени вырабатывалась и применялась интересная технология SQL-файл, основанная на расширениях SQLCMD. SQL-код хранится в файлах, организованных специальным образом в виде SQL-проекта (в дереве вложенных файловых папок). Для трансляции файлов в базу данных применяется легковесный обработчик — препроцессор-конкатенатор скриптов: SqlCatPP (EXE) в связке с вызывающей его обёрткой $SqlTrans (CMD). Так же, подразумевается использование вспомогательной библиотеки элементарных хелпер-объектов и констант (вида $(<ПеременнаяСреды>) ) SQLAUX (в приложение к основному транслятору/препроцессору). В качестве редактора SQL в настоящее время, помимо встроенного редактора Far Manager, а так же одного из GUI-редакторов для простого текста (см. в загрузках), доступно так же использование SQL Server Management Studio (+Environment), в немного ограниченном, однако, виде (см. устройство SSMS.cmd в загрузках).
II. Технология SQL-файл на страницах https://handicraft.remelias.ru/
Вот ссылки на страницы автора статьи (минимальное описание + картинки и примеры):
Ещё картинки (вспомогательное применение SQL-файл, бок-о-бок файлы SQL/C# и др.):