首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >PostgreSQL拷贝的行为

PostgreSQL拷贝的行为
EN

Database Administration用户
提问于 2012-05-13 01:36:00
回答 1查看 2.3K关注 0票数 1

让我在这个问题的前言中指出,我在DBA方面的经验仅限于大学本科的入门课程,而且我刚刚开始学习PostgreSQL。

我想通过编程方式将数据从非常大(~4GB)的平面CSV (我知道,不是最好的格式,但这是我必须使用的格式)定期地导入到PostgreSQL数据库中。我相信我可以用COPY FROM来完成这个任务。当遇到与现有记录匹配或冲突的CSV行时会发生什么?它是更新记录,忽略它,还是抛出错误?这种行为可以改变吗?

文献资料部分地指出:

复制将调用目标表上的任何触发器和检查约束。然而,它不会调用规则。

我对这一声明的解释是,这一声明将把CSV条目视为新记录,而不是更新现有记录,这反过来将违反可能放在列上的约束。这是正确的吗?如果是这样的话,似乎我唯一的行动就是在每次导入数据之前在表上发出DELETE。我觉得这是非常低效的。

更新

我正在使用的数据集的一个示例可以找到这里。我想从这个高度非规范化的来源导入数据并使其正常化.正如您所看到的,可能存在的每个相关天线都会复制每个许可证记录。

EN

回答 1

Database Administration用户

回答已采纳

发布于 2012-05-13 16:06:10

COPY FROM不会破坏数据库的完整性。

当约束失败时,会抛出一个错误,并且不会复制任何数据(该数据将被回滚)。

这种行为是不可改变的。您可以在编程语言中使用脚本来帮助您复制。

票数 3
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/17787

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档