快捷搜索:  as  test  1111  test aNd 8=8  test++aNd+8=8  as++aNd+8=8  as aNd 8=8

AG亚游手机客户端:Oracle数据提到文本文档进行查询的方法



在数据库中我运行了以下的查询语句:

Select PLAN_ID, EL_ID, NIIN, ITEM_NAME, PROJECT_CD,

CASE WHEN LCMC_DOC_NO IS NULL THEN MRODOC ELSE LCMC_DOC_NO END AS "DOCUMENT NUMBER"

FROM EQLIST_VIEW

WHERE PLAN_ID IN (736,1011)

AND LCMC_DOC_NO IN ('W56HZV0327W501','W52H090313X006','W52H090314X026',

'W52H090314X027','W52H090318X049','W52H090320X003','W56HZV0351M012',

'W56HZV0351M032','W56HZV0351M035','W919AD0334L091','W919AD0334L092',

'W919AD0352L025','W919AD0358L012','W919AD0358L017','W919AD0353L020',

'W56HZV0350M001')

ORDER BY NIIN, “DOCUMENT NUMBER”

问题是这样的,现在有跨越4000个DOC_NO,我想要抽取这些数据放到C盘上的一个文本文件傍边。我试了好几种措施,然则系统不停呈现第五行差错提示:“Syntax errorAG亚游手机客户端 near 'C'”

于是我从新写了一边查询:

Select PLAN_ID, EL_ID, NIIN, ITEM_NAME, PROJECT_CD,

CASE WHEN LCMC_DOC_NO IS NULL THEN MRODOC ELSE LCMC_DOC_NO END AS "DOCUMENT NUMBER"

FROM EQLIST_VIEW

WHERE PLAN_ID IN (736,1011)

AND LCMC_DOC_NO IN C:/Users/aj.moon/Desktop/TEMP/A5A_DOCNUM.TXT

能否供给一些好的建议?

答:你并没有说你在应用哪一个版本的Oracle数据库,那么我就先假设为Oracle 9i。第一个问题是你不能直接应用文本文件,首先你要做的是让这些数据在数据库内可用AG亚游手机客户端。你可以应用SQL*Loader来加载数据或者创建一个外部的表。在这里我就简单先容一下第二种措施。

外部表可以容许Oracle查AG亚游手机客户端询存储在数据库之外的平面文件中的数据。SQL*Loader加载的款式化存储数据你都可以造访。针对外部表,你无法应用INSERT/UPDATE/DELETE操作,然则你可以在查询中应用它们。一旦你创建了外部表,你就可以在视图中应用它,并创建synonyms。平日环境下,应用外部表主如果为了进行ETL操作,它可以防止数据进入真实表。然则假如你盘算频繁地查询外部表,就必要斟酌将数据加载到真实表傍边,由于外部表无法进行索引,机能将会受到对照大年夜的影响。

首先,创建外部表定义,然后将它引用到文件傍边。此时文件必须寄放在Oracle可AG亚游手机客户端以造访的路径下,也便是说不能够放在本地磁盘,而是必要放在你的数据库办事器路径下。然后创建一个DIRECTORY工具,指向文件路径:

CREATE OR REPLACE DIRECTORY ext_tab_dir AS 'C:temp\';

然后,应用CREATE TABLE..ORGANIZATION EXTERNAL语句创建外部表元数据:

CREATE TABLE docnum_ext

(

doc_no varchar2(30)

)

ORGANIZATION EXTERNAL

(

TYPE ORACLE_LOADER

DEFAULT DIRECTORY ext_tab_dir

ACCESS PARAMETERS

(FIELDS TERMINATED BY ',' )

LOCATION ('A5A_DOCNUM.TXT')

)

;

因为你没有供给文本文件的详细款式,以是我就假设是用逗号隔开的一系列值。假如你有不一样的款式,那么就必要在定义中变动ACCESS PARAMETERS,详细参考Oracle官方文档。

创建好外部表之后,你可以用简单的查询进行测试:

SQL> SELECT *

2 FROM docnum_ext;

DOC_NO

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

W56HZV0327W501

W52H090313X006

W52H090314X026

W52H090314X027

W52H090318X049

W52H090320X003

W56HZV0351M012

W56HZV0351M032

W56HZV0351M035

W919AD0334L091

W919AD0334L092

W919AD0352L025

W919AD0358L012

W919AD0358L017

W9AG亚游手机客户端19AD0353L020

W56HZV0350M001

当表的功能正常时,你可以反向查询:

Select PLAN_ID, EL_ID, NIIN, ITEM_NAME, PROJECT_CD,

CASE WHEN LCMC_DOC_NO IS NULL

THEN MRODOC

ELSE LCMC_DOC_NO

END AS "DOCUMENT NUMBER"

FROM EQLIST_VIEW

WHERE PLAN_ID IN (736,1011)

AND LCMC_DOC_NO IN (SELECT doc_no FROM docnum_ext)

ORDER BY NIIN, "DOCUMENT NUMBER"

;

以上的例子可以为你供给必然的参考,你可以改动路径和外部表定义来满意你的实际环境。盼望能够成为你的终极办理规划。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

您可能还会对下面的文章感兴趣: