Импорт большого файла sql в MySql через командную строку

Я пытаюсь импортировать файл sql около 300 МБ в MySql через командную строку в Ubuntu. Я использовал

source /var/www/myfile.sql;

прямо сейчас он отображает, казалось бы, бесконечные строки:

Query OK, 1 row affected (0.03 sec)

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

спасибо

5 ответов


можно импортировать .sql-файл, использующий стандартный ввод, выглядит следующим образом:

mysql -u <user> -p<password> <dbname> < file.sql

Примечание: не должно быть пространства между <-p> и <password>

ссылка:http://dev.mysql.com/doc/refman/5.0/en/mysql-batch-commands.html

Примечание Для исправления: этот ответ был немного изменен предлагаемыми изменениями для использования встроенного параметра пароля. Я могу рекомендовать его для скриптов, но вы должны быть помните, что при написании пароля непосредственно в параметре (-p<password>) он может быть кэширован историей оболочки, раскрывающей ваш пароль любому, кто может прочитать файл истории. Тогда как -p просит ввести пароль стандартным вводом.


ребята, что касается времени, затрачиваемого на импорт огромных файлов, самое главное, это занимает больше времени, потому что настройка по умолчанию mysql - "autocommit = true", вы должны установить это перед импортом файла, а затем проверить, как импорт работает как драгоценный камень...

Сначала откройте MySQL:

в mysql -u в корень -п

тогда вам просто нужно сделать следующее:

mysql>use your_db

mysql>SET autocommit=0 ; source the_sql_file.sql ; COMMIT ;


+1 к @MartinNuc, вы можете запустить mysql клиент в пакетном режиме, а затем вы не увидите длинный поток строк "OK".

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

@MartinNuc говорит, что он может загрузить 4GB SQL за 4-5 минут, но я запустил файлы SQL 0.5 GB и имел это займет 45 минут на небольшом сервере.

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


Re ваш комментарий,

@MartinNuc правильно, вы можете выбрать, чтобы клиент mysql печатал каждый оператор. Или вы можете открыть второй сеанс и запустить mysql> SHOW PROCESSLIST чтобы увидеть, что работает. Но вас, вероятно, больше интересует цифра "процент сделано" или оценка того, сколько времени потребуется для завершения оставшегося заявления.

извините, такой функции нет. Клиент mysql не знает, сколько времени потребуется для запуска более поздних операторов или даже сколько их есть. Поэтому он не может дать значимую оценку того, сколько времени потребуется для завершения.


решение я использую для больших восстановления SQL скрипт mysqldumpsplitter. Я разделил свой sql.gz в отдельные таблицы. затем загрузите что-то вроде MySQL workbench и обработайте его как восстановление до нужной схемы.

вот сценарий https://github.com/kedarvj/mysqldumpsplitter

и это работает для больших восстановлений sql, мой средний на одном сайте, с которым я работаю, - это 2.5 gb sql.файл gz, 20Gb несжатый и ~100Gb после полного восстановления


импорт большого файла sql в MySql через командную строку

  1. сначала скачать файл .
  2. вставить файл в home.
  3. используйте следующую команду в терминалах (CMD)
  4. синтаксис: mysql - u имя пользователя - P databsename

пример: mysql-u root-p aanew