2016-07-14 1 views
1

Существует общедоступная база данных, которую я могу загрузить с помощью rsync (mydb.sql.gz). Это довольно большой сжатый файл, около 130 МБ. При несжатом состоянии база данных составляет около 1,3 Гбит. Новые данные добавляются к нему ежедневно. Каков наиболее эффективный способ обновления локальной копии новыми данными удаленной базы данных?Обновление базы данных SQL с помощью .gz-файла

+0

Передано ли данным только новые записи или вся база данных? –

+0

О какой СУБД вы говорите? –

+0

@Rob - это вся БД. – GoldenJoe

ответ

2

Вы можете распаковать его на лету при импорте. Предполагая, что MySQL, эта команда должна работать:

gunzip -c mydb.sql.gz | mysql mydb -h host -u user -p 

Примечание: -c средства записи вывода на стандартный вывод.

BTW: Использование rsync для загрузки сжатого файла может не дать вам многого. Даже небольшие изменения в несжатых данных могут привести к большим изменениям в сжатом эквиваленте. Возможно, вам лучше просто использовать wget или curl, чтобы загрузить весь файл ежедневно.

+0

Хорошо, возможно, я не понимаю здесь несколько основных вещей. Пожалуйста, поправьте меня, если я ошибаюсь. Во-первых, я думал, что сжатие файла заставит rsync повторно загрузить весь файл в любом случае, так как он узнает, что изменилось? У поставщика данных только пример rsync в их инструкциях, поэтому я предположил, что это единственный способ захватить файл в любом случае. Во-вторых, что произойдет, если я удалю или заархивирую кучу старых строк в БД, которые мне действительно не нужны, а затем сделал это? Будут ли они добавлены обратно вместе с новыми строками? – GoldenJoe

+0

Да, изменения в несжатом файле приводят к большим изменениям в сжатом файле, что заставит rsync повторно загружать практически весь файл снова, тем самым отрицая любую выгоду, которую вы могли бы получить от использования rsync over curl. Фактически, rsync, вероятно, будет тратить время на различие файлов. Что касается вашего второго вопроса: мое предположение заключалось в том, что ежедневный образ был полной базой данных и что вы бы уничтожили все, что у вас было локально, и создали новый db на основе ежедневного gz-файла. Так что все, что есть в ежедневной дампе, которую вы не хотите, возвращается каждый день. – Asaph

Смежные вопросы