暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Oracle 我如何读取csv文件

askTom 2017-11-27
637

问题描述

嗨,汤姆 :)

资源:
1) 我有一个表格,上面是客户的记录数百万
2) 我有一个只有1,200个客户端的CSV
3) 我没有创建表的权限。


问题: 如何从CSV中读取以加入主体查询并仅从所选客户端检索数据:

示例:

-------------------------------------
with clients_selected
(
   select * from FILE.CSV
)

select process_id
  from t_process tp
  join clients_selected cs
  on cs.client_id=tp.client_id


-------------------------------------------------

CSV文件只有这样:

NIF
504594583
503640719
508327466
503361135
507685903
510204775
503142263
502309440
512004048
508597927
502303433
505306182


谢谢
雨果·巴托洛

专家解答

如果要使用SQL读取CSV文件,则需要外部表。所以如果你不能创造一个,你就不走运了。您必须首先使用UTL_file将数据读取到现有表中。

。除非你在12.2!

如果您可以查询现有的外部表,则可以使用external modify子句将其指向新位置。例如:

select * from ext_tab external modify (
  default directory new_dir
  location ('your_csv')
);


虽然你不能覆盖外部表的字段。因此,只有当您的CSV的签名与外部表的签名相匹配时,这才会起作用。

您可以在以下位置阅读更多信息:

https://oracle-base.com/articles/12c/override-external-table-parameters-from-query-12cr2

如果您使用的是18c,则可以创建一个内联外部表。一个只存在于您的查询。例如:

select * from external (
  ( c1 int, c2 int, ... )
  default directory new_dir
  location ('your_csv')
);


https://oracle-base.com/articles/18c/inline-external-tables-18c
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论