Я пытаюсь импортировать sql файл размером около 300 МБ в MySql через командную строку в Ubuntu. Я использовал
source /var/www/myfile.sql;
Теперь он отображает бесконечно выглядящие строки:
Query OK, 1 row affected (0.03 sec)
Однако он бежал немного сейчас. Я ранее не импортировал файл, поэтому я просто хочу знать, нормально ли это, если процесс заглох или имеет некоторые ошибки, будет ли это отображаться в командной строке или этот процесс будет продолжаться бесконечно?
Спасибо
Вы можете импортировать файл .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 root -p
Затем вам нужно сделать следующее:
mysql>use your_db
mysql>SET autocommit=0 ; source the_sql_file.sql ; COMMIT ;
+1 к @MartinNuc, вы можете запустить клиент mysql
в пакетном режиме, а затем вы не увидите длинный поток строк "OK".
Время, затрачиваемое на импорт данного файла SQL, зависит от многих факторов. Не только размер файла, но и тип инструкций в нем, насколько мощный серверный сервер и сколько других функций работает одновременно.
@MartinNuc говорит, что он может загрузить 4 ГБ SQL за 4-5 минут, но я запустил файлы объемом 0,5 ГБ SQL и потребовал 45 минут на меньшем сервере.
Мы не можем догадываться, сколько времени потребуется для запуска вашего SQL script на вашем сервере.
Повторите свой комментарий,
@MartinNuc правильно, вы можете выбрать, чтобы клиент mysql печатал каждое утверждение. Или вы можете открыть второй сеанс и запустить mysql> SHOW PROCESSLIST
, чтобы узнать, что работает. Но вас, вероятно, больше интересует цифра "процентная ставка" или оценка того, сколько времени потребуется для завершения остальных утверждений.
Извините, такой функции нет. Клиент mysql не знает, сколько времени потребуется для запуска более поздних операторов или даже сколько их есть. Поэтому он не может дать значимой оценки того, сколько времени потребуется для завершения.
mysql --verbose
чтобы увидеть каждую команду. Упоминается в ссылке dev.mysql.com/doc/refman/5.0/en/mysql-batch-commands.html.
Решение, которое я использую для большого восстановления sql, - это mysqldumpsplitter script. Я разделил sql.gz на отдельные таблицы. затем загрузите что-то вроде workbench mysql и обработайте его как восстановление требуемой схемы.
Вот script https://github.com/kedarvj/mysqldumpsplitter
И это работает для больших sql-восстановлений, мой средний на одном сайте, с которым я работаю, - это 2.5gb sql.gz файл, 20GB несжатый и ~ 100Gb после восстановления полностью