Я создал и сжал (с помощью bzip2) дамп SQL с рабочего сервера в Linux.
Я хочу создать сценарий оболочки, чтобы автоматически импортировать его в базу данных моей среды разработки (в Mac OS).
Файл dump.sql.bz2 хорошо распаковывается вручную с помощью утилиты Mac OS Archive. Но когда я использую командную строку, например bzip2 -dck dump.sql.bz2
или bunzip2 -k dump.sql.bz2
, sql-файл преобразован в двоичный и не может использоваться mysql (ERROR at line 1: Unknown command '\%'
), как вы можете видеть на этом скриншоте:
Сравнение извлечения bzip2 через графический интерфейс и интерфейс командной строки
Что эквивалентно командной строке утилиты архивирования для извлечения файла sql bz2 на Mac без его повреждения? Может быть, это не лучший способ делать то, что я хочу?
Ну, я нашел почему. Мой дамп SQL был сжат дважды, но имя не было dump.sql.bz2.bz2, просто dump.sql.bz2. Двоичный файл был результатом распаковки только первого слоя. Утилита Mac OS Archive более интеллектуальна, поскольку распознала это двойное сжатие и восстановила исходный файл дампа SQL.
Это решит вашу проблему
bunzip2 -dk dump.sql.bz2
# or
bunzip2 -ck dump.sql.bz2 > myfile.sql
-c
switch предназначены для вывода на stdout, вы должны указать результат stdout куда-нибудь, когда вы используете -c