Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/14.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.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
Postgresql 如何允许通过csv导入到临时表中来更新数据库表?_Postgresql_Amazon Web Services_Amazon Rds - Fatal编程技术网

Postgresql 如何允许通过csv导入到临时表中来更新数据库表?

Postgresql 如何允许通过csv导入到临时表中来更新数据库表?,postgresql,amazon-web-services,amazon-rds,Postgresql,Amazon Web Services,Amazon Rds,我正在为一家公司建立一个postgreSQL数据库,以帮助他们整理一堆Excel文件,其中包含重复的数据、过多的版本等等 该公司通常没有经验的用户会在命令行界面上犹豫不决。我为他们提供了足够的查询,使他们能够完成工作,我将根据需要编写更多的查询。他们希望能够熟练掌握PGAdmin 4 其中一项主要任务是更新持久表中的数据,它们最适合更新Excel文件,将其转换为CSV并运行查询。我希望通过使用COPY命令将数据上传到一个临时表中,然后使用INSERT/UPDATE命令,条件是不使用WHERE子句

我正在为一家公司建立一个postgreSQL数据库,以帮助他们整理一堆Excel文件,其中包含重复的数据、过多的版本等等

该公司通常没有经验的用户会在命令行界面上犹豫不决。我为他们提供了足够的查询,使他们能够完成工作,我将根据需要编写更多的查询。他们希望能够熟练掌握PGAdmin 4

其中一项主要任务是更新持久表中的数据,它们最适合更新Excel文件,将其转换为CSV并运行查询。我希望通过使用COPY命令将数据上传到一个临时表中,然后使用INSERT/UPDATE命令,条件是不使用WHERE子句覆盖/复制现有行,从而允许他们这样做

简言之,我正试图让他们从PGAdmin 4中完成他们需要的一切,我被困在他们可以上传CSV文件并从中更新表格的部分。下面显示了一个示例查询

我找到的唯一解决方案似乎是从命令行界面执行/复制,这是我试图避免的

AWS RDS不允许从我创建的主帐户授予超级用户权限。我也不能将pg_read_server_files角色授予任何人

他们首先将文件加载到临时表中:

创建临时表temp_TABLE col1文本, col2文本, col3文本, col4文本, col5文本 ; 使用分隔符“,”CSV头从“文件路径”复制临时表col1、col2、col3、col4、col5; 一旦数据加载到temp_表中,它们将执行:

插入表col1、col2、col3、col4、col5 选择col1、col2、col3、col4、col5 从临时表 其中col1不在表中,请从表中选择col1; 第一段代码给了我这个错误

错误:必须是超级用户或pg_read_server_files角色的成员才能从文件复制 提示:任何人都可以复制到标准输出或标准输入。psql的\copy命令也适用于任何人。 SQL状态:42501


pgAdmin4有自己的功能,类似于psql的\copy从客户端文件加载数据。在表名上单击鼠标右键后,将显示“导入/导出”对话框。就像\copy一样,它在后台使用STDIN的copy。您可以将其视为相当于\copy的GUI,这似乎正是您所需要的。

如果他们喜欢使用excel文件,为什么要使用数据库,excel现在有了共享选项?嗯,他们对Excel文件不太满意,因为它不能防止添加重复条目,不同的表之间有一些连接,有许多版本的Excel文件浮动。您可以使用pgAdmin4从文件导入到表中。然后创建一个过程,当使用ON CONFLICT子句调用时,可以调用该过程来更新主表。或者计划更新在一夜之间使用cron或pg_agent运行。啊,您已经保存了项目。非常感谢你。