首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用CSV文件中的值更新Oracle表

使用CSV文件中的值更新Oracle表
EN

Stack Overflow用户
提问于 2009-12-23 21:08:48
回答 5查看 23.3K关注 0票数 8

我有一个CSV文件,其中包含一个ID和几个其他列。我在oracle中也有一个表,其中的ID标识一行。如何才能最好地将表中的值替换为CSV文件中的值,同时保持其他列的原样?

这必须使用oracle本身提供的工具(即PL/SQL或SQL脚本)来完成,我不能使用“真正的”脚本语言(Python,...)或者是一个“真正的”程序。

谢谢,托马斯

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2009-12-23 21:16:37

查看Oracle文档中的外部表。您可以将csv文件复制到Oracle服务器上,并让Oracle将其显示为一个“普通”表,您可以在该表上运行查询。

然后,问题就变成了将数据从一个表复制到另一个表。

对于处理这样的数据加载,外部表真的非常有用。

票数 11
EN

Stack Overflow用户

发布于 2009-12-23 21:26:19

用于将CSV类型的数据文件加载到数据库中的“标准”Oracle工具是SQLLoader。它通常用于插入记录,但控制文件可以配置为运行更新,如果您希望这样做的话。

它不是世界上最容易使用的工具(请阅读“这是个麻烦”),但它是标准工具包的一部分,它可以完成这项工作。

票数 5
EN

Stack Overflow用户

发布于 2009-12-23 21:22:22

另一种选择是逐行读入文件,使用REGEXP_REPLACE之类的东西解析出一行中的字段,然后更新适当的行。您可以分析逗号分隔的字符串,如下所示:

代码语言:javascript
运行
复制
SELECT TRIM(REGEXP_REPLACE(strLine, '(.*),.*,.*', '\1')),
       TRIM(REGEXP_REPLACE(strLine, '.*,(.*),.*', '\1')),
       TRIM(REGEXP_REPLACE(strLine, '.*,.*,(.*)', '\1'))
  INTO strID, strField1, strField2      FROM DUAL;

如果您的站点不允许使用外部表,这将非常有用。

分享和享受。

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

https://stackoverflow.com/questions/1952714

复制
相关文章

相似问题

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