我在同一个数据库中有2个模式(postgresql)。
schema1
schema2
每个架构都有表users
和mail column
。
如何将schema1.users中的邮件列中的内容复制到所有行的mail2.users
我试过了:
update schema1.users
set mail=(select mail from schema2.users);
但没有用。
先谢谢
答案 0 :(得分:0)
你可以加入这两张桌子。我加入了用户,但我不知道tablelayout是什么样的。
update schema2.users
set mail=s1.mail
from schema1.mail as s1
where users.user = s1.user
答案 1 :(得分:0)
你可以做一个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
答案 2 :(得分:0)
这不是一个优雅的解决方案,但这是我在脚本中从命令行执行的操作,将特定表从一个模式复制到另一个模式中的特定表
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 ',' ;
我有几个表需要导出到新模式中的单个表,所以我有这个脚本,所以我有一个循环读取包含要导入到模式二的表名的文件,然后将它们发送到数据库通过使用下面的命令 - 它将在第二个模式中将大约30个表加载到表中。
psql -d alltg -c "\i bulk_import.sql"