Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将csv文件导入/复制到不在本地服务器上的PostgreSQL |文件中_Sql_Postgresql_Csv_Import - Fatal编程技术网

将csv文件导入/复制到不在本地服务器上的PostgreSQL |文件中

将csv文件导入/复制到不在本地服务器上的PostgreSQL |文件中,sql,postgresql,csv,import,Sql,Postgresql,Csv,Import,我正在尝试将我的csv文件导入/复制到PostgreSQL。然而,我遇到了这些错误。我没有文件的导入/写入权限。stdin会有帮助吗?如何帮助?博士后的文档没有提供任何例子。此后,我被要求进行批量插入,但由于有太多的列具有混合数据类型,我不知道如何进一步进行 复制csv文件的命令: COPY sales.sales_tickets FROM 'C:/Users/Nandini/Downloads/AIG_Sales_Tickets.csv' DELIMITER ',' CSV; inser

我正在尝试将我的csv文件导入/复制到PostgreSQL。然而,我遇到了这些错误。我没有文件的导入/写入权限。stdin会有帮助吗?如何帮助?博士后的文档没有提供任何例子。此后,我被要求进行批量插入,但由于有太多的列具有混合数据类型,我不知道如何进一步进行

复制csv文件的命令:

COPY sales.sales_tickets 
FROM 'C:/Users/Nandini/Downloads/AIG_Sales_Tickets.csv' 
DELIMITER ',' CSV;
insert into sales.sales_ticket values (1,'2',3,'4','5',6,7,8,'9',10','11');
错误:必须是超级用户才能复制到文件或从文件复制
提示:任何人都可以复制到标准输出或标准输入。psql的\copy命令也适用于任何人。
1语句失败

执行批量插入的命令太耗时:

COPY sales.sales_tickets 
FROM 'C:/Users/Nandini/Downloads/AIG_Sales_Tickets.csv' 
DELIMITER ',' CSV;
insert into sales.sales_ticket values (1,'2',3,'4','5',6,7,8,'9',10','11');
请建议。谢谢。

来自

复制命名文件或命令仅允许数据库超级用户使用,因为它允许读取或写入服务器有权限访问的任何文件

复制命令中命名的文件由服务器直接读取或写入,而不是由客户端应用程序读取或写入。因此,它们必须驻留在数据库服务器计算机上,或可供数据库服务器计算机(而不是客户端)访问。它们必须可供PostgreSQL用户(服务器运行时的用户ID)而不是客户端访问并可读写。类似地,使用PROGRAM指定的命令直接由服务器执行,而不是由客户机应用程序执行,必须由PostgreSQL用户执行。复制命名文件或命令仅允许数据库超级用户使用,因为它允许读取或写入服务器有权限访问的任何文件

您试图使用
COPY
命令违反了以下两个要求:

  • 您正试图从非超级用户执行
    COPY
    命令
  • 您正在尝试读取客户端计算机上的文件,并将其复制到服务器 这行不通。如果需要执行此类
    复制
    ,则需要:

  • 将CSV文件复制到服务器;到执行PostgreSQL server进程的(系统)用户可以读取的目录
  • 从超级用户帐户执行
    COPY
    命令

  • 备选方案

    如果你不能做到这些,你可以使用一个工具,比如和使用它的

    另请参见

    复制命名文件或命令仅允许数据库超级用户使用,因为它允许读取或写入服务器有权限访问的任何文件

    复制命令中命名的文件由服务器直接读取或写入,而不是由客户端应用程序读取或写入。因此,它们必须驻留在数据库服务器计算机上,或可供数据库服务器计算机(而不是客户端)访问。它们必须可供PostgreSQL用户(服务器运行时的用户ID)而不是客户端访问并可读写。类似地,使用PROGRAM指定的命令直接由服务器执行,而不是由客户机应用程序执行,必须由PostgreSQL用户执行。复制命名文件或命令仅允许数据库超级用户使用,因为它允许读取或写入服务器有权限访问的任何文件

    您试图使用
    COPY
    命令违反了以下两个要求:

  • 您正试图从非超级用户执行
    COPY
    命令
  • 您正在尝试读取客户端计算机上的文件,并将其复制到服务器 这行不通。如果需要执行此类
    复制
    ,则需要:

  • 将CSV文件复制到服务器;到执行PostgreSQL server进程的(系统)用户可以读取的目录
  • 从超级用户帐户执行
    COPY
    命令

  • 备选方案

    如果你不能做到这些,你可以使用一个工具,比如和使用它的

    另见