Oracle 外部表:高级平面文件布局
我希望在 Oracle 数据库中创建一个外部表,从服务器上的平面文件中检索其数据。 该文件的格式并不简单。 该文件中的每一行都可以是几种不同布局之一,具体取决于行的前缀(前缀本身始终是固定长度)。 例如,以 'TYPE1'
开头的行与以 'TYPE2'
开头的行具有不同的布局。
我读到外部表可以利用 SQLLoader 控制文件可用的所有构造。 然而,我读过的任何文档都只是接缝来处理琐碎的平面文件布局,其中所有行共享一个公共布局。 SQLLoader 控制文件可以使用 WHEN 子句轻松处理这种情况:
WHEN (1:5) = 'TYPE1'
(
field1 POSITION(10:18),
field2 POSITION(26:35)
)
WHEN (1:5) = 'TYPE2'
(
field1 POSITION(23:27),
field2 POSITION(15:19)
)
如何使用 Oracle 的外部表定义语法表达这样的布局?
I wish to create an external table in an Oracle database, retrieving its data from a flat file on the server. The format of this file is non-trivial. Each line in this file can be one of several different layouts, depending on the line's prefix (the prefix itself is always a fixed length). For example, a line beginning with 'TYPE1'
would have a different layout than a line beginning with 'TYPE2'
.
I have read that external tables can take advantage of all the constructs made available to SQLLoader's control files. However, any documentation I have read only seams to deal with trivial flat-file layouts whereby all lines share a common layout. A SQLLoader control file could easily handle this scenario using the WHEN
clause:
WHEN (1:5) = 'TYPE1'
(
field1 POSITION(10:18),
field2 POSITION(26:35)
)
WHEN (1:5) = 'TYPE2'
(
field1 POSITION(23:27),
field2 POSITION(15:19)
)
How can I express such a layout using Oracle's external table definition syntax?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
这是来自 9.2 文档,但您需要 LOAD WHEN 子句。
http://download.oracle.com/docs/ cd/B10500_01/server.920/a96652/ch12.htm
This is from 9.2 docs but you need the LOAD WHEN clause.
http://download.oracle.com/docs/cd/B10500_01/server.920/a96652/ch12.htm
如果您有固定记录,请尝试此操作
然后您可以根据记录类型访问然后列
宣布
光标 c1 希望
这有帮助
If You have fixed records try this
Then You can access to then columns depending on record-type
declare
cursor c1 is
Hope this helps