`
Java_KAbanban
  • 浏览: 38159 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

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 error 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。第一个问题是你不能直接使用文本文件,首先你要做的是让这些数据在数据库内可用。你可以使用SQL*Loader来加载数据或者创建一个外部的表。在这里我就简单介绍一下第二种方法。
外部表可以允许Oracle查询存储在数据库之外的平面文件中的数据。SQL*Loader加载的格式化存储数据你都可以访问。针对外部表,你无法使用INSERT/UPDATE/DELETE操作,但是你可以在查询中使用它们。一旦你创建了外部表,你就可以在视图中使用它,并创建synonyms。通常情况下,使用外部表主要是为了进行ETL操作,它可以防止数据进入真实表。但是如果你打算频繁地查询外部表,就需要考虑将数据加载到真实表当中,因为外部表无法进行索引,性能将会受到比较大的影响。
    首先,创建外部表定义,然后将它引用到文件当中。此时文件必须存放在Oracle可以访问的路径下,也就是说不能够放在本地磁盘,而是需要放在你的数据库服务器路径下。然后创建一个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
    W919AD0353L020
    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"
    ;
    以上的例子可以为你提供一定的参考,你可以修改路径和外部表定义来满足你的实际情况。希望能够成为你的最终解决方案。
分享到:
评论

相关推荐

    ORACLE导入数据文件到指定的表空间

    数据文件可能是由Oracle Export工具创建的.dmp文件,或者是其他格式的文本文件,比如题目中的imp-test.sql和imp-test2.txt。 2. **使用IMP命令**:如果你使用的是传统的IMP工具,命令格式大致如下: ``` imp ...

    Oracle创造测试数据

    4. **SQL*Loader**:Oracle的批量数据加载工具,可以从文本文件中快速导入大量数据。 5. **第三方工具**:如Data Generator for Oracle,可以生成符合特定模式的大量数据,包括模拟日期、字符串、数字等。 测试数据...

    oracle数据导入导出FTP

    这里提到的"高性能的oracle文本处理器"和"sqlload"是指Oracle的SQL*Loader工具,它是一个高效的数据加载程序,能够快速地将大量数据从文本文件批量导入到Oracle数据库中。 **Oracle SQL*Loader基础** SQL*Loader是...

    文件批量导入数据到oracle数据库

    首先,"文件批量导入数据到Oracle数据库"指的是将一个或多个文本文件(例如CSV、TXT格式)中的数据一次性加载到Oracle数据库的表中。这种操作可以极大地提高效率,尤其是在处理大量数据时,比逐条插入更有效率。常用...

    oracle数据库导出表结构到WORD文档

    3. **生成脚本**:在工具中找到“导出”或“生成脚本”的选项,这通常会生成一个包含CREATE TABLE语句的文本文件,这些语句可以重建表结构。 4. **转换为Word**:将生成的SQL脚本复制到Word文档中,并按照需要进行...

    EXCEL,TXT文档导入到ORACLE方法.doc

    标题和描述中提到的是关于如何将EXCEL和TXT文档导入到ORACLE数据库的过程,以及从ORACLE导出数据到EXCEL的两种方法。这个过程涉及到数据处理和数据库管理的基础技能,下面将详细解释这些步骤。 首先,从EXCEL导入到...

    oracle ebs开发文档

    文档中提到了一系列的入门指南,分为四周的“口水贴”,主要目的是帮助新手快速熟悉 Oracle EBS 的基本操作流程。这些“口水贴”涵盖了 EBS 的安装配置、开发工具的使用以及简单的开发实践等内容。 **1.2 Forms ...

    oracle 报表开发中用PCK直接生成xml数据文件

    Oracle的`dbms_xmlgen`包提供了生成XML文档的功能,它能够将数据库查询结果转换成XML格式。在描述中提到的`XML_PRINT`过程,就是利用`dbms_xmlgen.getXML()`来实现这个功能的一个示例。首先,我们来看一下这个过程的...

    Oracle 批处理

    3. **XML在Oracle中的处理**:Oracle数据库支持XMLType数据类型,可以存储XML文档,并提供了强大的XMLDB功能来解析、查询和操作XML数据。使用DBMS_XSL_PROCESSOR或DBMS_XMLGEN等包,可以将XML数据转换为其他格式,...

    用Pl*SQL将Excel中数据导入到oracle中,将oracle的数据通过Pl*SQL导向Excel

    3. **使用SQL Loader**:Oracle提供了一个名为SQL*Loader的工具,可以将文本文件(如CSV或Excel文件)的数据批量导入到数据库中。不过,由于Excel文件通常需要先转换为CSV格式,所以你可能需要借助其他工具(如...

    classmate-oracle.rar_oracle_查询系统

    "www.pudn.com.txt"这个文件可能是从Pudn网站下载的资源,通常这种文本文件可能包含下载链接、说明文档或者版权信息。在本例中,它可能提供了一些关于classmate-oracle系统的安装步骤、配置指南或者源代码的获取途径...

    oracle遍历数据库查找字符串

    Oracle数据库系统作为全球广泛使用的数据库管理系统,提供高效、稳定的数据存储和查询能力。本文将深入探讨如何使用Oracle遍历数据库查找字符串,以及一个简化此过程的工具。 标题"Oracle遍历数据库查找字符串"暗示...

    通过.bat文件连接oracle 插入数据库记录

    例如,如何处理SQL查询结果、错误处理机制、如何读取外部文件的数据进行批量插入等。 至于标签“源码”和“工具”,这可能意味着博主会提供一些示例代码或者推荐一些实用的工具来帮助读者更好地理解如何使用批处理...

    基于.NET的Oracle BLOB数据高效存取方法.pdf

    标题提到的“基于.NET的Oracle BLOB数据高效存取方法”是一种针对Oracle数据库中BLOB类型数据存储和读取的优化策略。BLOB(Binary Large Object)是Oracle数据库中用于存储大量二进制数据的对象,常用于保存图像、...

    Sql Server 2000 数据迁移至Oracle(含NClOB特殊字段)

    - **NCLOB字段兼容性:** Oracle数据库中的NCLOB字段主要用于存储大量的Unicode文本数据。在迁移过程中,需要确保Sql Server 2000中的相应字段能够正确转换为Oracle的NCLOB类型。 - **数据格式转换:** 迁移时还需...

    Oracle导出Clob,Blob工具

    Oracle数据库中的Clob类型用于存储大量的文本数据,如XML文档、长篇文章或者日志文件。Blob类型则用于存储非结构化的二进制数据,如图片、音频文件或PDF文档。由于这些数据量大,常规的SQL查询可能无法有效处理,...

    基于Oracle的数据交换技术研究.pdf

    文章中提到了七种数据交换技术,这些技术不仅适用于Oracle数据库,还可推广到其他应用Oracle作为数据管理服务器的场景。 2. Oracle自带工具:Import/Export Oracle提供了内置的Import和Export工具,它们分别用于将...

    Java连接oracle数据例子.rar_java ORACLE jtable_java oracle_oracle_卫星轨道

    在IT行业中,Java是一种广泛应用的编程语言,而Oracle则是一款著名的商业关系型...总的来说,这个示例提供了使用Java JDBC连接Oracle数据库并进行基本操作的方法,适用于任何需要与Oracle数据库交互的Java应用程序。

    Oracle数据类型说明

    下面我们将详细探讨标题和描述中提到的Oracle数据类型。 1. CHAR:CHAR数据类型用于存储固定长度的字符串,最大长度为2000个字节。这种数据类型在创建时必须指定长度,不足的部分将用空格填充,因此在处理字符串时...

Global site tag (gtag.js) - Google Analytics