首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用sqlldr将数据导入varray

如何使用sqlldr将数据导入varray
EN

Stack Overflow用户
提问于 2017-12-04 13:58:39
回答 1查看 682关注 0票数 1

我试图使用sqlldr将数据导入Oracle数据库。

我正在使用这个文档,但没有成功:赛尔德尔sqlldr2

揭露我正在做的事:

创建varray类型和表:

代码语言:javascript
复制
CREATE OR REPLACE TYPE fv_integer_varray_12 AS VARRAY(12) OF INTEGER NOT NULL;

CREATE OR REPLACE TYPE VC_Array_MInteger_12 AS Object (
  fv_array fv_integer_varray_12,
  MEMBER FUNCTION   typeDimension   RETURN NUMBER ,
  MEMBER FUNCTION typeName RETURN VARCHAR2);
/  

CREATE TABLE fv_varray_12 (
id NUMBER, 
fv fv_integer_varray_12,
PRIMARY KEY (id)
);

创建控制文件:

代码语言:javascript
复制
options (errors=9999999, rows=5)
load data
 characterset WE8MSWIN1252
 infile '<path>'
 badfile '<path>'
 discardfile '<path>'
 into table fv_varray_12
 fields terminated by " "
( id, fv VARRAY COUNT(12) (fv))

要加载的数据是:

代码语言:javascript
复制
8 18 29 38 9 16 15 14 16 18 16 13 15 
9 22 31 32 8 13 18 10 15 18 16 13 13 

当我试图通过命令加载它时:

代码语言:javascript
复制
sqlldr user/pass control=imp_fv_12dim.ctl

我知道错误:

SQL*Loader-403:表FV_VARRAY_12中未显示的引用列。

但这不是真的,因为id和fv列都在那里。

我的控制文件肯定出了什么问题。我怎么才能修好它?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-12-04 17:46:14

您只是缺少关键字CONSTANT

代码语言:javascript
复制
fv VARRAY COUNT(CONSTANT 12) (fv)

这在文档中的示例中是缺失的(但是它们的数据看起来也很奇怪);但是它显示为必需的语法图,它在加载VARRAY时从12c文件链接--但也可以在文档的早期版本中使用。

使用示例数据和对控制文件的修改:

代码语言:javascript
复制
options (errors=9999999, rows=5)
load data
characterset WE8MSWIN1252
infile 'imp_fv_12dim.dat'
badfile 'imp_fv_12dim.bad'
discardfile 'imp_fv_12dim.dis'
into table fv_varray_12
fields terminated by " "
( id,
  fv VARRAY COUNT(CONSTANT 12) (fv)
)

然后它起作用了:

代码语言:javascript
复制
> sqlldr user/pass control=imp_fv_12dim.ctl

SQL*Loader: Release 11.2.0.4.0 - Production on Mon Dec 4 17:41:04 2017

Copyright (c) 1982, 2011, Oracle and/or its affiliates.  All rights reserved.

Commit point reached - logical record count 2

查询显示了数据:

代码语言:javascript
复制
column fv format a80
select * from fv_varray_12;

        ID FV                                                                              
---------- --------------------------------------------------------------------------------
         8 FV_INTEGER_VARRAY_12(18, 29, 38, 9, 16, 15, 14, 16, 18, 16, 13, 15)             
         9 FV_INTEGER_VARRAY_12(22, 31, 32, 8, 13, 18, 10, 15, 18, 16, 13, 13)             
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47635053

复制
相关文章

相似问题

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