繁体   English   中英

从另一个schema.table.column postgresql更新列的内容

[英]update content of column from another schema.table.column postgresql

我在同一数据库(PostgreSQL)中有2个架构。

schema1

schema2

每个模式都有表usersmail column

我如何将内容从schema1.users中的mail列复制到所有行的message列到schema2.users

我试过了:

update schema1.users
set mail=(select mail from schema2.users);

但是没有用

提前致谢

您可以加入两个表。 我加入了用户,但我不知道布局如何。

update schema2.users 
set mail=s1.mail
from schema1.mail as s1
where users.user = s1.user

您可以对表进行UPDATE,假设两个表都具有匹配的ID,则它看起来像这样:

UPDATE schema1.users a
SET mail=b.mail
FROM schema2.users b
WHERE a.id=b.id

我正在做的是加入表并为每个匹配的ID更新schema1.users上的邮件。

编辑:我刚刚读到您实际上想要更新schema2.users邮件。 查询将是以下内容:

UPDATE schema2.users a
SET mail=b.mail
FROM schema1.users b
WHERE a.id=b.id

这不是一个优雅的解决方案,但这是我从脚本的命令行中执行的操作,将特定表从一个模式复制到另一个模式中的特定表

set search_path to schema1;   

\copy (select field1, nextfield, morefields from table_in_schema1 ) TO export.sql delimiter ',' ;

set search_path to schema2; 

\copy table_name_in_schema2(matchingfield1, field_that_matches_next, another_field_forPosition2, ) FROM 'export.sql' DELIMITER ',' ;

我有几个表需要导出到新架构中的单个表中,因此我已对此脚本编写了脚本,因此我有一个循环,该循环读取包含表名的文件,以导入到架构2中,然后使用来将它们发送到数据库中。下面的命令-将向第二个模式中的表加载大约30个表。

psql -d alltg -c "\i bulk_import.sql"

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM