Postgresql 如何将压缩文件导入Postgres表

Postgresql 如何将压缩文件导入Postgres表,postgresql,zip,Postgresql,Zip,我想在我的Postgresql系统中输入一个重要的文件(特别是红移)。我发现了一个允许导入gzip文件的copy参数。但是我试图包含在系统中的数据的提供者只生成.zip格式的数据。任何用于打开.zip文件的内置postgres命令?您可以执行以下操作吗 解压-c myfile.zip | gzip myfile.gz 如果您有足够的文件,就可以很容易地实现自动化 解压-c/path/to/.zip | psql-U用户 “用户”必须具有超级用户权限,否则您将获得 ERROR: must b

我想在我的Postgresql系统中输入一个重要的文件(特别是红移)。我发现了一个允许导入gzip文件的copy参数。但是我试图包含在系统中的数据的提供者只生成.zip格式的数据。任何用于打开.zip文件的内置postgres命令?

您可以执行以下操作吗


解压-c myfile.zip | gzip myfile.gz

如果您有足够的文件,就可以很容易地实现自动化

解压-c/path/to/.zip | psql-U用户

“用户”必须具有超级用户权限,否则您将获得

ERROR:  must be superuser to COPY to or from a file
要了解更多有关此的信息,请参阅


基本上,此命令用于处理大型数据库

这可能仅在从S3加载红移时有效,但实际上,在将数据复制到红移表时,您可以只包含一个“gzip”标志,如下所述:

如果我的s3存储桶包含gzip.csv文件,那么这就是适合我的格式

copy <table> from 's3://mybucket/<foldername> '<aws-auth-args>' delimiter ',' gzip;
从's3://mybucket/'delimiter','gzip;
来自Postgres内部:

COPY table_name FROM PROGRAM 'unzip -p input.csv.zip' DELIMITER ',';
解压-p
的手册页:

-p     extract files to pipe (stdout).  Nothing but the file data is sent to stdout, and the files are always extracted  in  binary
       format, just as they are stored (no conversions).

文件未存储在本地,数据库不是local.Ug。这让事情变得很艰难,因为我认为amzn没有任何选择。您可以访问存储文件的服务器上的exec psql并以这种方式连接吗?否则,您可能需要通过中间人服务器发送文件。