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_%'
=====================================================================
- 浏览: 10078 次
- 性别:
- 来自: 重庆
相关推荐
定时导出oracle指定用户下指定表的所有数据及格式生成CSV文件,通过存储过程; 1.使用特定用户或者system登陆到oracle执行"存储过程.txt"里面的脚本生成对应的存储过程; (说明:存储过程.txt脚本说明,查询指定用户下...
oracle存储过程生成csv文件,易学易懂,通过此方法能够学习到oracle文件流具体操作,对于能力提升有极大帮助。
### 从Oracle生成表的数据字典方法 在Oracle数据库管理中,数据字典是一个非常重要的工具,它能够帮助我们理解数据库结构、表定义以及列属性等详细信息。本篇文章将介绍如何从Oracle数据库中利用COMMENT生成Excel...
Java 使用 JDBC 将数据库数据导出到 CSV 文件 Java 是一种广泛使用的编程语言,它提供了多种方式来处理数据库数据,而 JDBC(Java Database Connectivity)是 Java 中连接数据库的标准 API 之一。将数据库数据导出...
Oracle数据库则是企业级数据库管理系统,常用于存储大量关键数据。本话题将深入探讨如何利用C#来导出Oracle数据库中的所有表结构。 首先,我们需要安装必要的库来连接到Oracle数据库。Oracle提供了一个名为ODP.NET...
这里我们将探讨如何通过脚本或批处理工具实现这一过程,无需编程知识,下载后即可直接使用。 首先,Oracle提供了一种名为SQL*Plus的命令行工具,它是与数据库交互的接口。通过SQL*Plus,我们可以执行SQL查询并将其...
在Oracle数据库中,数据表是存储数据的主要结构,由一系列行和列组成,每一行代表一个实体,每一列代表实体的一个属性。要将这些数据表导出,我们需要一个中间工具来完成转换。 描述中提到的“工具”通常指的是SQL...
在转换过程中,我们可能需要根据Excel的列名动态构建Oracle数据库的表结构。这可以通过解析Excel的第一行(通常包含列名)并生成相应的CREATE TABLE语句来完成。确保列类型与Excel数据类型相匹配,比如数值、字符串...
工具可能允许用户通过选择相关表和字段,自动生成连接查询语句,大大简化了多表数据操作的复杂性。 3. **数据库对象管理**:工具可能包含对数据库对象(如表、视图、索引、存储过程等)的管理功能,便于用户查看、...
4. 数据流生成扫描件:这可能指的是将Oracle数据库中的数据转换为某种格式(如CSV或XML),以便于分析、备份或迁移。扫描件可能指的是生成的数据文件,这些文件包含了从数据库中提取的所有信息。 根据描述中的博文...
例如,你可以创建一个存储过程,执行SQL查询并将结果集写入到一个临时表中,然后使用UTL_FILE包将临时表内容写入到CSV文件,最后在Excel中打开。 三、源码与工具 标签中提到的“源码”可能是指用于转换Excel文件...
在工资表系统中,"导入"功能可能涉及从CSV或Excel文件读取数据并批量插入数据库;"导出"则是从数据库中查询数据并生成报表或文件;"增删改查"是基本的数据操作,C#的事件驱动编程模型使得这些操作可以通过按钮点击等...
Oracle提供了强大的ACID(原子性、一致性、隔离性、持久性)事务处理能力,并支持复杂的SQL查询和存储过程。Oracle数据库的特色包括RAC(Real Application Clusters)集群技术,允许在多台服务器上共享同一数据库,...
6. **错误处理**:SQL*Loader在加载过程中会生成一个日志文件,记录了成功导入的记录以及遇到的问题。如果存在错误,需要根据日志进行数据清洗,修复错误后重新导入。 7. **优化性能**:对于非常大的TXT文件,可以...
1. **最新会计科目表2018.csv**:这是以逗号分隔值存储的会计科目数据,可以轻松地在Excel、Google Sheets或其他支持CSV的程序中打开。CSV文件通常用于跨平台的数据交换,因为它简单且不依赖特定的应用程序。 2. **...
在Oracle数据库中,**外部表**是一种特殊类型的表,其数据存储于数据库之外,通常位于文件系统中。这使得用户能够在无需将数据导入数据库的情况下,直接使用SQL对这些数据进行查询。外部表为用户提供了一种高效、...
要将CSV文件加载到数据库,我们首先需要打开一个数据库连接,创建一个SQL命令,然后使用批处理或循环将CSV数据逐行插入到表中。 以下是一个基本步骤: 1. **建立数据库连接**:使用SqlConnection类,传入数据库...
5. 执行转换,生成CSV文件。 这个过程对于数据分析师、数据工程师以及任何需要从数据库提取数据并以结构化格式存储的用户来说,都是十分实用的。Kettle的强大之处在于其灵活性和可扩展性,可以根据不同的需求进行...
2. **数据查看和管理**:在连接成功后,用户可以浏览数据库中的表、视图、存储过程等对象,还可以创建新的表和索引,管理用户权限,进行数据导入导出等操作。 3. **SQL开发**:Navicat 提供了强大的SQL编辑器,支持...