pg_restore: [arşivleyici] dosya üstbilgisinde sihirli dize bulamadı


14

PostgreSQL 9.1 kullanıyorum ve ile oluşturulan yedekleme dosyalarını geri yüklemek istiyorum pg_dump:

sudo pg_dump -h 127.0.0.1 -U postgres --clean --inserts -E UTF8 -f out.sql database_name

Bu komut, varolan herhangi bir veritabanı nesnesinin düşürülmesiyle başlayan geçerli bir sql dosyası oluşturur, ardından tüm tabloları, dizinleri, dizileri vb. Oluşturur ve son olarak veri ekler.

Oluşturulan yedekleme dosyasını ile geri yüklemeye çalıştığımda: (satır sonları yalnızca görüntüleme amacıyla eklendi)

sudo pg_restore 
    -d database_name -h 127.0.0.1 -U postgres
    --format=c --clean --create out.sql

başarısız olur ve yazdırır:

pg_restore: [archiver] did not find magic string in file header

Bunun nedeni nedir?

Yanıtlar:


19

İle geri yüklüyorsunuz pg_restore --format=c ...ama pg_dumpile --format=cyapılmadı, varsayılan, düz formatla yapıldı.

Gönderen pg_dumpman:

  -F format, --format=format
       Selects the format of the output.  format can be one of the
       following:

       p, plain
           Output a plain-text SQL script file (the default).

Düz biçimdeki bir döküm doğrudan psqlkomut satırı aracına beslenmelidir , pg_restorene olduğunu bilmiyor, bu da bu hata iletisinin nedeni: dosya başlığında sihirli dize bulamadı .

Kabuktaki döküm dosyasına doğrudan bakabilir more out.sqlve okunabilir SQL komutlarını görürsünüz. İle geri yükleyin psql -f out.sql [other options]. --createSeçenek pg_dumpçağrısında bulunmadığından , öncelikle hedef veritabanını oluşturmak isteyeceksiniz .

Öte yandan, --format=cseçeneklerine ekleyerek dökümü yeniden başlatabilirsiniz . O zaman tersi olur: pg_restoredöküm dosyasını özel biçimde yorumlamak için kullanılmalıdır.


0

Olası bir sorun, veri dosyanızın kesilmiş olmasıdır. Dosya boyutlarını karşılaştırarak tam dosyayı indirip indirmediğinizi kontrol edin.


0

Git-lfs kullanıyorsanız, işaretçinin değil gerçek dosyanın bulunduğundan emin olun!

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.