Я часто импортирую базы данных MySQL, и это может занять некоторое время. Нет никакого индикатора прогресса вообще. Можно ли это как-то показать? Либо импортированные записи, импортированные МБ, либо импортированные таблицы ... все лучше, чем просто ожидание. Есть идеи?
Я использую эту команду:
mysql -uuser -p -hhost database < largefile.sql
Размер файлов составляет 40-300 МБ, а хост находится в локальной сети.
pv
,cpipe
) в этом сценарии?pv
это именно то, что ищет спрашивающий. Я только что установил его на CentOS через rpmforge. Если указан параметр размера, он даже покажет ETA.pv
сделал трюк действительно! Если кто-то может сделать это ответ, я могу принять это!Ответы:
Есть хороший инструмент под названием
pv
тогда, например, вы можете использовать это так
PS: проверьте этот блог http://blog.larsstrand.org/2011/12/tip-pipe-viewer.html
ОБНОВЛЕНИЕ: похоже, что выше ссылка не работает, но я нашел ту же статью здесь http://blog.larsstrand.no/2011/12/tip-pipe-viewer.html
ОБНОВЛЕНИЕ 2: Еще лучшее решение с полной шкалой прогресса. Для этого вам нужно использовать 2 встроенные
pv
опции. Одним из них является ,--progress
чтобы показать прогресс бар и второй это--size
сказать ,pv
насколько большой общий файл.проблема в
.gz
оригинальном размере файла Вам нужно каким-то образом получить распакованную информацию о оригинальном размере файла, не распаковывая ее самостоятельно, иначе вы потеряете драгоценное время, чтобы распаковать этот файл дважды (первый разpv
и второй разzcat
). Но, к счастью, у вас естьgzip -l
опция, которая содержит несжатую информацию о нашем файле gziped. К сожалению, у вас есть это в табличном формате, поэтому вам нужно извлечь его, прежде чем его можно будет использовать. Все вместе можно увидеть ниже:Уф ... так что последнее, что вам нужно сделать, это просто объединить все вместе.
Чтобы сделать его еще лучше, вы можете добавить progres NAME, как это
Конечный результат:
ОБНОВЛЕНИЕ 3: Для быстрого использования создайте пользовательскую функцию.
использование:
Если вы не знаете, где его поставить, прочитайте этот ответ: /unix//a/106606/20056
Вы можете добавить функции среди псевдонимов. Таким образом, вы можете использовать, например,
~/.bash_aliases
файл.источник
pv --progress --name 'DB Import in progress' -tea /path/to/our/database.sql.gz | zcat | mysql -h db_host -u db_user -pdb_password db_name
Почему так сложно?
Это прекрасно работает:
источник
Я всегда импортирую базы данных из оболочки MySql. Он не предоставляет индикатор прогресса, но (быстро) прокручивает действия, которые он выполняет, поэтому я знаю, что он работает.
источник