有一个在码头容器中运行的数据库。我需要在本地复制这个数据库。要做到这一点,我使用以下命令
docker exec -t 5a5c84157ffe pg_dumpall -c -U postgres | gzip > /home/jekson/dump_$(date +"%Y-%m-%d_%H_%M_%S").sql`因此,我得到了dump_2021-09-03_11_44_36.sql文件。接下来,在本地为它创建一个空数据库和一个用户。并尝试恢复数据。
psql -h localhost -d marketing -U marketing -f dump_2021-09-03_11_44_36.sql但是有个错误
psql:dump_2021-09-03_11_44_36.sql:2: ERROR: invalid byte sequence for encoding "UTF8": 0x8b
psql:dump_2021-09-03_11_44_36.sql:12: error: invalid command \T�F5��
�a��M
psql:dump_2021-09-03_11_44_36.sql:14: error: invalid command \��p���ϦM)=�K�"�y�tÂ�"9���Ӕ�����1%�2j��F~��]0w��2C�ɦ
psql:dump_2021-09-03_11_44_36.sql:16: error: invalid command \�!O�C�ө�l?�m��G'�����qf#"z[�`�}-�ʷ��?S��u>�F1-w[�
psql:dump_2021-09-03_11_44_36.sql:17: error: invalid command \ݫ|�����e��)y��^t��-�<��'����a3��'�Ns�
psql:dump_2021-09-03_11_44_36.sql:18: error: invalid command \�5��B���r�
psql:dump_2021-09-03_11_44_36.sql:145: error: invalid command \l�?�_�po�����A����/c(h�������@��P���߈w�o^�����w��&|�:�ߟ9J���gx�3�������#���'�i���B>�I�b���/5e�'�O�
psql:dump_2021-09-03_11_44_36.sql:152: error: invalid command \[�gI?��6���W�$
psql:dump_2021-09-03_11_44_36.sql:155: error: invalid command \&Tʅ�sZ�7abw�w̘)KoRǥD���eAs�L,E�d�a�VD��h�E���u���b�v��_��֗Z�:��C-
psql:dump_2021-09-03_11_44_36.sql:160: error: invalid command \��a����
+�]�Ґ�R���Ȋ���e��W
psql:dump_2021-09-03_11_44_36.sql:970815: ERROR: invalid byte sequence for encoding "UTF8": 0xc0 0xa9校验编码
postgres=# SHOW SERVER_ENCODING;
server_encoding
-----------------
UTF8
(1 row)
psql (PostgreSQL) 13.4 (Ubuntu 13.4-0ubuntu0.21.04.1)发布于 2021-09-03 09:28:30
因此,我得到了dump_2021-09-03_11_44_36.
是的,但是文件里有什么?我们把你的命令拆开:
docker exec -t 5a5c84157ffe pg_dumpall -c -U postgres 使用docker作为用户postgres运行pg_dumpall并创建一个基于字符的转储文件。到目前一切尚好。
| gzip 阿。您正在获取该纯文本SQL文件并将其通过gzip实用程序,该实用程序输出一个压缩的ZIP文件.
> /home/jekson/dump_$(date +"%Y-%m-%d_%H_%M_%S").sql ..。并将其写入sql文件。
当您尝试恢复它时,您将ZIP文件输入到psql中,而不是它所期望的纯文本SQL --因此产生了所有的抱怨。
在将文件输入mysql之前,要么需要解压缩.
gunzip /home/jekson/dump_2021-09-03_11_44_36.sql \
| psql -h localhost -d marketing -U marketing ..。或者,也许更简单一点,根本不用使用gzip。YMMV,取决于转储文件的大小。
https://dba.stackexchange.com/questions/298997
复制相似问题