Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/72.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:COPY命令可以用于从多个表复制列吗?_Sql_Postgresql - Fatal编程技术网

PostgreSQL:COPY命令可以用于从多个表复制列吗?

PostgreSQL:COPY命令可以用于从多个表复制列吗?,sql,postgresql,Sql,Postgresql,我想将多个表中的列中的值复制到csv文件中,不确定posgres copy命令是否支持从多个表中复制列 下面是一个简单的例子,说明了我想使用下表做的事情: environment ╔════════╦═══════════╦══════╦══════╗ ║ env_id ║ placem_id ║ humd ║ wind ║ ╠════════╬═══════════╬══════╬══════╣ ║ 104║ 4 ║ 48 ║ 119 ║ ║ 68 ║

我想将多个表中的列中的值复制到csv文件中,不确定posgres copy命令是否支持从多个表中复制列

下面是一个简单的例子,说明了我想使用下表做的事情:

environment
╔════════╦═══════════╦══════╦══════╗
║ env_id ║ placem_id ║ humd ║ wind ║
╠════════╬═══════════╬══════╬══════╣
║     104║        4  ║   48 ║  119 ║
║     68 ║        9  ║   39 ║  141 ║
╚════════╩═══════════╩══════╩══════╝

placement
╔═══════════╦════════╦═══════════════╦══════════════════════════╗
║ placem_id ║ loc_id ║  description  ║           date           ║
╠═══════════╬════════╬═══════════════╬══════════════════════════╣
║         4 ║     64 ║ description_1 ║ 2019-03-12T20:40:35.967Z ║
║         7 ║      5 ║ description_2 ║ 2019-03-12T20:56:51.319Z ║
╚═══════════╩════════╩═══════════════╩══════════════════════════╝

location
╔════════╦═══════════╦═══════════╦════════════════════╗
║ loc_id ║    log    ║    lat    ║      address       ║
╠════════╬═══════════╬═══════════╬════════════════════╣
║     64 ║ 13.3986   ║ 52.5547   ║ Bosebrucke Einkauf ║
║     71 ║ 21.150122 ║ -6.607044 ║ Charlotte Court    ║
╚════════╩═══════════╩═══════════╩════════════════════╝
我想使用placement表中的placem_id和loc_id从environment表和location表中选择记录

可以使用下面的复制函数语法复制来自多个表的这些列:

\copy products TO '/tmp/products.csv' CSV DELIMITER ','
编辑:


我对《环境》杂志的humd和wind专栏感兴趣;然后列从位置表记录lat和地址。

您可以发送查询,而不必使用控制台:


将Select humd、wind、log、lat、地址从位置自然连接放置自然连接环境复制到“/tmp/test.csv”,并使用csv分隔符“,”

您可以发送查询,而不是使用控制台:


将Select humd、wind、log、lat、地址从位置自然连接放置自然连接环境复制到“/tmp/test.csv”,并使用csv分隔符“,”

但我只对选定数量的列感兴趣,而不是所有列,即环境表中的humd和wind;来自位置表的日志、lat和地址。您可以使用具有设置数量的列的查询,而不是“*”,甚至可以使用联接、并集等,但您将其作为一个块,这将是无用的,如果要使用结果将数据还原到单独的表中。@StasShafeev他可能需要csv格式的报告。@arilwan只需按照建议对列执行操作:指定所需的列。我使用内部联接将查询传递到\COPY命令,它可以工作。但我只对选定的列数感兴趣,而不是所有列,即,环境表中的humd和风;来自位置表的日志、lat和地址。您可以使用具有设置数量的列的查询,而不是“*”,甚至可以使用联接、并集等,但您将其作为一个块,这将是无用的,如果要使用结果将数据还原到单独的表中。@StasShafeev他可能需要csv格式的报告。@arilwan只需按照建议对列执行操作:指定所需的列。我使用“内部联接”将查询传递到\COPY命令,就可以了。