`
z10one
  • 浏览: 10078 次
  • 性别: Icon_minigender_1
  • 来自: 重庆
社区版块
存档分类
最新评论

oracle 通过存储过程把表生成csv

 
阅读更多

CREATE OR REPLACE PROCEDURE SP_SQL_TO_CSV(P_QUERY IN VARCHAR2, -- PLSQL文
                               P_DIR IN VARCHAR2, -- 导出的文件放置目录
                               P_FILENAME IN VARCHAR2 -- CSV名
                               )

 IS

  L_OUTPUT UTL_FILE.FILE_TYPE;
  L_THECURSOR INTEGER DEFAULT DBMS_SQL.OPEN_CURSOR;
  L_COLUMNVALUE VARCHAR2(4000);
  L_STATUS INTEGER;
  L_COLCNT NUMBER := 0;
  L_SEPARATOR VARCHAR2(1);
  L_DESCTBL DBMS_SQL.DESC_TAB;
  P_MAX_LINESIZE NUMBER := 32000;

BEGIN

  --OPEN FILE
  L_OUTPUT := UTL_FILE.FOPEN(P_DIR, P_FILENAME, 'W', P_MAX_LINESIZE);

  --DEFINE DATE FORMAT
  EXECUTE IMMEDIATE 'ALTER SESSION SET NLS_DATE_FORMAT=''YYYY-MM-DD HH24:MI:SS''';

  --OPEN CURSOR
  DBMS_SQL.PARSE(L_THECURSOR, P_QUERY, DBMS_SQL.NATIVE);
  DBMS_SQL.DESCRIBE_COLUMNS(L_THECURSOR, L_COLCNT, L_DESCTBL);

  --DUMP TABLE COLUMN NAME
  FOR I IN 1 .. L_COLCNT LOOP

    UTL_FILE.PUT(L_OUTPUT, L_SEPARATOR || '"' || L_DESCTBL(I).COL_NAME || '"');

    DBMS_SQL.DEFINE_COLUMN(L_THECURSOR, I, L_COLUMNVALUE, 4000);

    L_SEPARATOR := ',';

  END LOOP;

  UTL_FILE.NEW_LINE(L_OUTPUT);

  --EXECUTE THE QUERY STATEMENT

  L_STATUS := DBMS_SQL.EXECUTE(L_THECURSOR);

  --DUMP TABLE COLUMN VALUE

  WHILE (DBMS_SQL.FETCH_ROWS(L_THECURSOR) > 0) LOOP

    L_SEPARATOR := '';

    FOR I IN 1 .. L_COLCNT LOOP
      DBMS_SQL.COLUMN_VALUE(L_THECURSOR, I, L_COLUMNVALUE);
      UTL_FILE.PUT(L_OUTPUT, L_SEPARATOR || '"' ||TRIM(BOTH ' ' FROM REPLACE(L_COLUMNVALUE, '"', '""')) || '"');
      L_SEPARATOR := ',';
    END LOOP;

    UTL_FILE.NEW_LINE(L_OUTPUT);

  END LOOP;

  --CLOSE CURSOR
  DBMS_SQL.CLOSE_CURSOR(L_THECURSOR);

  --CLOSE FILE
  UTL_FILE.FCLOSE(L_OUTPUT);

  /*
  --执行语句  需要dba或者sys权限
  -- 创建存放文件的目录
  CREATE OR REPLACE DIRECTORY MYDIR AS 'F:\backup\dir_wms\';
 -- GRANT all on directory MYDIR to WMS_DG;

  -- 执行块
   begin
     SP_sql_to_csv('select * from T_ZXZC_TMP ','MYDIR','T_ZXZC_TMP.CSV');
   end;

   */
EXCEPTION
  WHEN OTHERS THEN
    RAISE;
END;



==============================================================================================================

 --执行语句  需要dba或者sys权限
  -- 创建存放文件的目录
  CREATE OR REPLACE DIRECTORY MYDIR AS 'D:\aaa\';
 -- GRANT all on directory MYDIR to WMS_DG;
 
=================================================================================================================
SELECT 'call SP_SQL_TO_CSV(''select * from ' ||T.TABLE_NAME ||
''',''MYDIR''' || ',''' || T.TABLE_NAME ||
 '.csv'');'
 FROM user_TABLES T where t.TABLE_NAME like 'V_%'
 =====================================================================

分享到:
评论

相关推荐

    oracle定时存储过程导出用户表或者指定表及数据导出CSV文件

    定时导出oracle指定用户下指定表的所有数据及格式生成CSV文件,通过存储过程; 1.使用特定用户或者system登陆到oracle执行"存储过程.txt"里面的脚本生成对应的存储过程; (说明:存储过程.txt脚本说明,查询指定用户下...

    csv生成代码.txt

    oracle存储过程生成csv文件,易学易懂,通过此方法能够学习到oracle文件流具体操作,对于能力提升有极大帮助。

    从oracle生成表的数据字典方法

    ### 从Oracle生成表的数据字典方法 在Oracle数据库管理中,数据字典是一个非常重要的工具,它能够帮助我们理解数据库结构、表定义以及列属性等详细信息。本篇文章将介绍如何从Oracle数据库中利用COMMENT生成Excel...

    java使用jdbc将数据库数据导出到csv文件.pdf

    Java 使用 JDBC 将数据库数据导出到 CSV 文件 Java 是一种广泛使用的编程语言,它提供了多种方式来处理数据库数据,而 JDBC(Java Database Connectivity)是 Java 中连接数据库的标准 API 之一。将数据库数据导出...

    c# 导出oracle数据库下所有表结构

    Oracle数据库则是企业级数据库管理系统,常用于存储大量关键数据。本话题将深入探讨如何利用C#来导出Oracle数据库中的所有表结构。 首先,我们需要安装必要的库来连接到Oracle数据库。Oracle提供了一个名为ODP.NET...

    oracle导出数据生成excel

    这里我们将探讨如何通过脚本或批处理工具实现这一过程,无需编程知识,下载后即可直接使用。 首先,Oracle提供了一种名为SQL*Plus的命令行工具,它是与数据库交互的接口。通过SQL*Plus,我们可以执行SQL查询并将其...

    oracle数据表导出为word文档

    在Oracle数据库中,数据表是存储数据的主要结构,由一系列行和列组成,每一行代表一个实体,每一列代表实体的一个属性。要将这些数据表导出,我们需要一个中间工具来完成转换。 描述中提到的“工具”通常指的是SQL...

    c#中高效的excel导入oracle的方法

    在转换过程中,我们可能需要根据Excel的列名动态构建Oracle数据库的表结构。这可以通过解析Excel的第一行(通常包含列名)并生成相应的CREATE TABLE语句来完成。确保列类型与Excel数据类型相匹配,比如数值、字符串...

    mysql&oracle;语句自动生成工具

    工具可能允许用户通过选择相关表和字段,自动生成连接查询语句,大大简化了多表数据操作的复杂性。 3. **数据库对象管理**:工具可能包含对数据库对象(如表、视图、索引、存储过程等)的管理功能,便于用户查看、...

    memcache多线程将ORACLE数据流生成扫描件

    4. 数据流生成扫描件:这可能指的是将Oracle数据库中的数据转换为某种格式(如CSV或XML),以便于分析、备份或迁移。扫描件可能指的是生成的数据文件,这些文件包含了从数据库中提取的所有信息。 根据描述中的博文...

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

    例如,你可以创建一个存储过程,执行SQL查询并将结果集写入到一个临时表中,然后使用UTL_FILE包将临时表内容写入到CSV文件,最后在Excel中打开。 三、源码与工具 标签中提到的“源码”可能是指用于转换Excel文件...

    Oracle 10g+ c#制作的工资表制作

    在工资表系统中,"导入"功能可能涉及从CSV或Excel文件读取数据并批量插入数据库;"导出"则是从数据库中查询数据并生成报表或文件;"增删改查"是基本的数据操作,C#的事件驱动编程模型使得这些操作可以通过按钮点击等...

    支持MYSQL和ORACLE数据库表

    Oracle提供了强大的ACID(原子性、一致性、隔离性、持久性)事务处理能力,并支持复杂的SQL查询和存储过程。Oracle数据库的特色包括RAC(Real Application Clusters)集群技术,允许在多台服务器上共享同一数据库,...

    如何通过txt文件批量导入数据到oracle数据库

    6. **错误处理**:SQL*Loader在加载过程中会生成一个日志文件,记录了成功导入的记录以及遇到的问题。如果存在错误,需要根据日志进行数据清洗,修复错误后重新导入。 7. **优化性能**:对于非常大的TXT文件,可以...

    最新会计科目表2018.sql.xlsx.csv.excel.zip

    1. **最新会计科目表2018.csv**:这是以逗号分隔值存储的会计科目数据,可以轻松地在Excel、Google Sheets或其他支持CSV的程序中打开。CSV文件通常用于跨平台的数据交换,因为它简单且不依赖特定的应用程序。 2. **...

    oracle 外部表语法

    在Oracle数据库中,**外部表**是一种特殊类型的表,其数据存储于数据库之外,通常位于文件系统中。这使得用户能够在无需将数据导入数据库的情况下,直接使用SQL对这些数据进行查询。外部表为用户提供了一种高效、...

    通过数据库存取数据(可将csv表格上传至数据库服务器进行处理).rar

    要将CSV文件加载到数据库,我们首先需要打开一个数据库连接,创建一个SQL命令,然后使用批处理或循环将CSV数据逐行插入到表中。 以下是一个基本步骤: 1. **建立数据库连接**:使用SqlConnection类,传入数据库...

    Kettle工具将数据查询导出csv文件格式方法

    5. 执行转换,生成CSV文件。 这个过程对于数据分析师、数据工程师以及任何需要从数据库提取数据并以结构化格式存储的用户来说,都是十分实用的。Kettle的强大之处在于其灵活性和可扩展性,可以根据不同的需求进行...

    oracle数据库连接工具

    2. **数据查看和管理**:在连接成功后,用户可以浏览数据库中的表、视图、存储过程等对象,还可以创建新的表和索引,管理用户权限,进行数据导入导出等操作。 3. **SQL开发**:Navicat 提供了强大的SQL编辑器,支持...

Global site tag (gtag.js) - Google Analytics