pg_restore: [archiver] không tìm thấy chuỗi ma thuật trong tiêu đề tệp


13

Tôi đang sử dụng PostgreSQL 9.1 và muốn khôi phục các tệp sao lưu được tạo bằng pg_dump:

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

Lệnh này tạo một tệp sql hợp lệ bắt đầu bằng cách thả bất kỳ đối tượng cơ sở dữ liệu hiện có nào, sau đó tạo tất cả các bảng, kích thước, trình tự, v.v. và cuối cùng chèn dữ liệu.

Khi tôi cố gắng khôi phục tệp sao lưu đã tạo bằng: (ngắt dòng được thêm vào chỉ cho mục đích hiển thị)

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

nó thất bại và in:

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

lý do cho điều đó là gì?

Câu trả lời:


19

Bạn đang khôi phục pg_restore --format=c ...nhưng pg_dumpkhông được thực hiện --format=c, nó được thực hiện với định dạng đơn giản , mặc định.

Từ pg_dumptrang web:

  -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).

Một kết xuất ở định dạng đơn giản nên được cung cấp trực tiếp cho psqlcông cụ dòng lệnh, pg_restorekhông biết nó là gì, đó là lý do của thông báo lỗi này: không tìm thấy chuỗi ma thuật trong tiêu đề tệp .

Bạn có thể nhìn trực tiếp vào tệp kết xuất có more out.sqlshell và bạn sẽ thấy các lệnh SQL có thể đọc được. Khôi phục nó với psql -f out.sql [other options]. Bạn có thể sẽ muốn tạo cơ sở dữ liệu đích trước tiên, vì --createtùy chọn không có trong pg_dumplời gọi.

Mặt khác, bạn có thể kích hoạt bãi chứa thêm --format=cvào các tùy chọn của nó. Sau đó, điều đó sẽ ngược lại: pg_restorephải được sử dụng để diễn giải một tệp kết xuất theo định dạng tùy chỉnh.


0

Một vấn đề có thể là tệp dữ liệu của bạn bị cắt ngắn. Kiểm tra xem nếu bạn đang tải xuống tệp đầy đủ bằng cách so sánh kích thước tệp.


0

Nếu bạn sử dụng git-lfs, hãy đảm bảo có tệp thực tế chứ không phải con trỏ!

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.