Postgresql转储/恢复列

时间:2016-11-08 21:46:20

标签: postgresql restore dump

我想做的是这个

Get-ChildItem -File -Recurse | Select-Object -ExpandProperty FullName | Out-File -FilePath c:\filelist.txt;
Send-MailMessage -To YOURADDRESS -From YOURADDRESS -SmtpServer YOURSMTPHOST -Subject Filelist -Attachments c:\filelist.txt;

然后

psql -d xxx -c "select user_id from res_partner;" > backup.txt

将数据插回到表中仍存在很大的问题...有没有办法在postgresql中转储特定表的特定列,然后将所有内容插回?

要添加更多上下文,真正的问题是我正在从名为Odoo的Web服务升级模块。每个模块都可能插入/更新约束...在我的例子中,我在同一列上更改了约束以引用其他列。它工作正常,但是当我们升级服务器时,它会尝试插回旧的外键,然后当我的模块加载时它会添加我的外键...但由于它指向不同的列,旧的外键失败了约束错误...我想在升级期间抑制约束检查或备份恢复数据。具有空值不应引发约束错误。

1 个答案:

答案 0 :(得分:3)

抱歉,没有理解你的上下文,但可以告诉你如何转储/恢复你的数据:)。我的解决方案非常简单。

第1步,将数据保存到文件
COPY res_partner(id, user_id) TO '/tmp/filename.txt';
第二步 - 将数据恢复到临时表
CREATE TABLE res_partner_tmp(id int, user_id int);
COPY res_partner_tmp(id, user_id) FROM '/tmp/filename.txt';

对于你的情况,可能不需要转储到文件,只需创建表的副本
CREATE TABLE res_partner_tmp AS SELECT id,user_id FROM res_partner;

最后一步 - 恢复您的数据
UPDATE res_partner o SET user_id=c.user_id FROM res_partner_tmp c WHERE o.id=c.id;

相关问题