我有一个CSV文件,其中包含一个ID和几个其他列。我在oracle中也有一个表,其中的ID标识一行。如何才能最好地将表中的值替换为CSV文件中的值,同时保持其他列的原样?
这必须使用oracle本身提供的工具(即PL/SQL或SQL脚本)来完成,我不能使用“真正的”脚本语言(Python,...)或者是一个“真正的”程序。
谢谢,托马斯
发布于 2009-12-23 21:16:37
查看Oracle文档中的外部表。您可以将csv文件复制到Oracle服务器上,并让Oracle将其显示为一个“普通”表,您可以在该表上运行查询。
然后,问题就变成了将数据从一个表复制到另一个表。
对于处理这样的数据加载,外部表真的非常有用。
发布于 2009-12-23 21:26:19
用于将CSV类型的数据文件加载到数据库中的“标准”Oracle工具是SQLLoader。它通常用于插入记录,但控制文件可以配置为运行更新,如果您希望这样做的话。
它不是世界上最容易使用的工具(请阅读“这是个麻烦”),但它是标准工具包的一部分,它可以完成这项工作。
发布于 2009-12-23 21:22:22
另一种选择是逐行读入文件,使用REGEXP_REPLACE之类的东西解析出一行中的字段,然后更新适当的行。您可以分析逗号分隔的字符串,如下所示:
SELECT TRIM(REGEXP_REPLACE(strLine, '(.*),.*,.*', '\1')),
TRIM(REGEXP_REPLACE(strLine, '.*,(.*),.*', '\1')),
TRIM(REGEXP_REPLACE(strLine, '.*,.*,(.*)', '\1'))
INTO strID, strField1, strField2 FROM DUAL;如果您的站点不允许使用外部表,这将非常有用。
分享和享受。
https://stackoverflow.com/questions/1952714
复制相似问题