Php postgrescopy命令将zip文件加载到数据库中

Php postgrescopy命令将zip文件加载到数据库中,php,postgresql,copy,Php,Postgresql,Copy,我有一个生成zip文件的程序,我将这些文件临时保存在如下目录中: 1.zip 2.zip 3.zip ... CREATE TABLE files ( id int, file bytea, primary key (id)); 我编写了一个PHP程序,将这些文件加载到Postgres数据库中,但我需要使用命令Postgres“copy”(因为可能更快) 我搜索了一下,但找不到答案 所以我的桌子是这样的: 1.zip 2.zip 3.zip .

我有一个生成zip文件的程序,我将这些文件临时保存在如下目录中:

  1.zip
  2.zip
  3.zip
  ...
  CREATE TABLE files (
  id int,
  file bytea,
  primary key (id));
我编写了一个PHP程序,将这些文件加载到Postgres数据库中,但我需要使用命令Postgres“copy”(因为可能更快)

我搜索了一下,但找不到答案

所以我的桌子是这样的:

  1.zip
  2.zip
  3.zip
  ...
  CREATE TABLE files (
  id int,
  file bytea,
  primary key (id));
因此,每个文件名都是“id”列,每个zip文件都位于“file”字段中

那么,如何使用“复制”命令执行此操作

谢谢大家!

对支持的二进制格式有一些限制,我不确定它是否适用于zip文件。如果您愿意使用
INSERT
,我建议您使用,例如:

对支持的二进制格式有一些限制,我不确定它是否适用于zip文件。如果您愿意使用
INSERT
,我建议您使用,例如:


这是一个可怕的想法,为什么要在数据库中存储zip文件?有一个数据库的名称,明确地用于存储文件。。。一个“文件系统”。@EvanCarroll我怎么做一个文件系统?这是一个可怕的想法,你为什么要在数据库中存储zip文件?有一个数据库的名称,明确地用于存储文件。。。一个“文件系统”。@EvanCarroll我怎么做一个文件系统?谢谢你,但我的问题是我有200万个文件,所以我怎么能做得更快?我得到了一个错误错误:无法统计文件“1.zip”:没有这样的文件或目录鉴于你可能应该使用
COPY。。。然后使用二进制
。更好的是,如果可能的话,只在表中存储文件路径,在这种情况下,它将是一个简单的
副本。对于
pg_read_file
,它是一个服务器端管理功能,因此您需要以PostgreSQL管理员用户身份运行,目标文件需要位于
data_目录下
。它们也可以通过
data\u directory
中的符号链接驻留在其他地方(但要注意潜在的安全风险)。因此我得出结论,最好使用copy命令将文件路径保存在数据库中。但我找不到一个好的教程来解释我的过程。文件可以在任何地方?我只需要保存文件路径?那么我怎样才能下载这些文件呢?保存文件路径应使用哪种列类型?文本?非常感谢您,您可以将文件路径字符串存储在类型为的列中,例如,字符可变(250)。假设您使用的是PHP(正如您的问题被标记的那样),只要您的服务器端PHP应用程序至少具有对文件的读取权限,实际文件就可以存储在文件系统的任何位置。谢谢您,但我的问题是我有200万个文件,因此如何更快地执行此操作?我遇到了以下错误:无法统计文件“1.zip”:没有这样的文件或目录鉴于您可能应该使用
COPY。。。然后使用二进制
。更好的是,如果可能的话,只在表中存储文件路径,在这种情况下,它将是一个简单的
副本。对于
pg_read_file
,它是一个服务器端管理功能,因此您需要以PostgreSQL管理员用户身份运行,目标文件需要位于
data_目录下
。它们也可以通过
data\u directory
中的符号链接驻留在其他地方(但要注意潜在的安全风险)。因此我得出结论,最好使用copy命令将文件路径保存在数据库中。但我找不到一个好的教程来解释我的过程。文件可以在任何地方?我只需要保存文件路径?那么我怎样才能下载这些文件呢?保存文件路径应使用哪种列类型?文本?非常感谢您,您可以将文件路径字符串存储在类型为的列中,例如,字符可变(250)。假设您使用的是PHP(正如您的问题被标记的那样),只要您的服务器端PHP应用程序至少具有文件的读取权限,实际文件就可以存储在文件系统的任何位置。