问题描述
嗨,汤姆 :)
资源:
1) 我有一个表格,上面是客户的记录数百万
2) 我有一个只有1,200个客户端的CSV
3) 我没有创建表的权限。
问题: 如何从CSV中读取以加入主体查询并仅从所选客户端检索数据:
示例:
-------------------------------------
-------------------------------------------------
CSV文件只有这样:
谢谢
雨果·巴托洛
资源:
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子句将其指向新位置。例如:
虽然你不能覆盖外部表的字段。因此,只有当您的CSV的签名与外部表的签名相匹配时,这才会起作用。
您可以在以下位置阅读更多信息:
https://oracle-base.com/articles/12c/override-external-table-parameters-from-query-12cr2
如果您使用的是18c,则可以创建一个内联外部表。一个只存在于您的查询。例如:
https://oracle-base.com/articles/18c/inline-external-tables-18c
。除非你在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进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




