一、前言

  工作中我们可能遇到这样的需要:查询数据库中的信息,并将结果导出到Excel文件。这本来没什么,但数据量比较大时,用PLSQL、toad导出Excel会出现内存不足等情况,使用odbc+Microsoft query + Excel导出提数结果能在一定程度上避免这些问题。

  环境:个人电脑8G内存,导出130W条记录毫无压力。

二、下载、安装Oracle Database Client

Windows默认没有按照Oracle的ODBC驱动,需要手动安装,Oracle Database Client包含了Oracle ODBC驱动组件。

1、下载

地址:https://edelivery.oracle.com/osdc/faces/SearchSoftware

在搜索框中输入oracle database client,然后选择系统平台为Windows 64,选定oracle database client ,然后按照提示,下载该组件

下载该组件,可能单击 download,没有反应,鼠标移动到要下载的软件位置,可用右击“目标另存为”方式下载要下载的组件

2、安装

三、下载、安装Instant Client

1、下载

打开链接:

http://www.oracle.com/technetwork/cn/database/features/instant-client/index-092699-zhs.html

选择适用于Windows32位系统的instant client即可,下载该组件

选择下面两个版本中的任何一项均可:

2、安装

  该组件直接解压即可,无需安装。解压到某个指定的目录下,在解压后的文件目录下创建子目录/network/admin,并将配置好的tnsname.ora文件拷贝到该目录下(或手动创建该文件并配置该文件,步骤略)

设置环境变量:

  右击计算机—>属性—> 高级选项卡à环境变量—>新建系统变量或用户变量(用户变量只对当前用户有效,系统变量对所有用户有效)à设置环境变量ORACLE_HOME,指向解压文件目录。“确定”,退出

同样,设置环境变量TNS_ADMIN,指向instantclient下的network\admin目录,这样,odbc数据源就可以自动获取tns信息,如下:

3、可能遇到的问题:若不配置环境变量ORACLE_HOME,在使用ODBC数据源时,会报错“Unable to connect SQLState=08004 [Oracle][ODVC][Ora]ORA-12154:TNS:could not resolve the connect identifier specified”,这种情况同样发生在使用oracle instant组件的PowerDesigner等工具连接数据库的情况下。

四、配置odbc数据源

(1)打开odbc数据源管理工具

方式一:在开始-->所有程序中或搜索odbc,找到Microsoft ODBC管理员程序

方式二:控制面板-->管理工具-->数据源

(2)添加用户DSN

用户DSNà添加,选择Oracle驱动(MySQL、SQLserver等可安装并选择对应的驱动),完成

(4)填写ODBC配置信息并测试连通性

  填写odbc数据源配置信息,标注部分为必填项,数据源名称为任意有含义的字符串,可用中文,TNS Server Name格式为“ip:port/数据库名称”,User ID 为访问数据库的用户名(port默认是1521,请记得防火墙和杀软放行1521端口),数据库名称选用tsnnames.ora文件中的SERVICE_NAME的值。

注意:TNS Service Name填写方式有两种方法:

    第一种,填写完整格式:TNS Service Name的完整格式是: 数据库主机名:端口号/数据库实例名。

    第二种:如果配置的数据源很多,可以按照Oracle instant Client,这里安装了instant client,并设置了TNS_ADMIN的环境变量,TNS Service Name选项下会有所有已经设置TNS的数据库实例名列表。当要操作的数据库实例比较多时,这种方法很方便。

  填写完毕,先测试数据源连通性“Test Connection”,输入密码,“OK”

若提示连接成功,说明配置无误,“确定”,“OK”,退出管理程序。否则,检查并修改配置信息。

四、创建临时表

执行SQL语句,将结果集较大的查询语句加工到临时表中,如下:

CREATE TABLE TMP_TEST AS
SELECT E.EMPNO, E.ENAME, E.JOB, E.MGR, E.HIREDATE, E.SAL, D.DNAME, D.LOC
FROM EMP E, DEPT D
WHERE E.DEPTNO = D.DEPTNO;

五、配置Excel,导出数据

(1)新建Excel,数据—>自其他来源—>来自Microsoft Query

(2)选择配置好的数据源,“确定”

(3)填写对应的密码

(4)选项里可设置查找要导出的对象的范围,进入“选项”

(5)表选项里可设置要导出的对象:表、视图、同义词等,注意选择用户,当有大量用户和表时,可大大缩小查找范围

(6)在左侧要导出的表中,找到要导出的字段,>按钮可将选择好的字段导入到右侧的待查询列中。

待筛选的列,可根据需要对字段进行条件设置

排序顺序,可选择关键字排序,同时可选择多个关键字

导出默认即可,当然,也可以使用Microsoft query编辑查询,实现一些复杂的查询,并将结果导出到Excel中。

选择导入到Excel中的位置。

导出结果示例如下:

本文原始地址:http://www.cnblogs.com/chinas/p/6991311.html,转载请注明出处,谢谢!!!

 

配置ODBC DSN数据源,导出数据库数据到Excel过程记录的更多相关文章

  1. java 对excel操作 读取、写入、修改数据;导出数据库数据到excel

    ============前提加入jar包jxl.jar========================= // 从数据库导出数据到excel public List<Xskh> outPu ...

  2. 导出数据库数据制成Excel和txt

    引用ICSharpCode.SharpZipLib.dll 1.编写压缩和解压代码 using System; using System.Collections.Generic; using Syst ...

  3. 导出数据库数据到Excel表

    后台需要将用户信息数据导入到Excel表中提供给相关人员: 首先查询数据就不多说了: 导入Excel表直接亮代码(采用的是jxl的jar包提供的方法): public static File Impo ...

  4. 配置toad进行导入导出数据库操作

    最近需要对oracle进行导入导出操作,于是研究使用toad进行导入导出oracle数据库操作,现稍作记录. oracle的导入导出不管是否使用toad还是pl/sql工具进行操作,实际上最终都是通过 ...

  5. 数据库数据用Excel导出的3种方法

    将数据库数据用Excel导出主要有3种方法:用Excel.Application接口.用OleDB.用HTML的Tabel标签 方法1——Excel.Application接口: 首先,需要要Exce ...

  6. PHP导出MySQL数据到Excel文件

    PHP导出MySQL数据到Excel文件 转载 常会碰到需要从数据库中导出数据到Excel文件,用一些开源的类库,比如PHPExcel,确实比较容易实现,但对大量数据的支持很不好,很容易到达PHP内存 ...

  7. .NET使用Office Open XML导出大量数据到 Excel

    我相信很多人在做项目的都碰到过Excel数据导出的需求,我从最开始使用最原始的HTML拼接(将需要导出的数据拼接成TABLE标签)到后来happy的使用开源的NPOI, EPPlus等开源组件导出EX ...

  8. Excel导出数据库数据

    package com.hxkr.util; import java.io.FileOutputStream; import java.util.ArrayList; import java.util ...

  9. DB2导入导出数据库数据

    导出数据库中数据 在db2cmd命令下生成建库脚本(-z指定模式名) db2look -d BBS -z db2admin -u db2admin -e -o bbs.sql 在db2cmd命令下导出 ...

随机推荐

  1. oracle表空间到32G后扩容

    ), ) total_space FROM dba_data_files ORDER BY tablespace_name; /*查看表空间的使用情况*/ select a.a1 表空间名称, tru ...

  2. UVAlive3211_Now or later

    白书上的例题. 每种航班可以选择两种时间降落,如果想任意航班降落时间差的最小值最大,应该如何安排? 二分时间,如果两个时间只差小于当前枚举的时间,说明这条边不可选,可以根据2sat的方法构图. 然后判 ...

  3. SGU438_The Glorious Karlutka River =)

    好题,有一些人在河的一边,想通过河里的某些点跳到对岸去.每个点最多只能承受一定数量的人,每人跳跃一次需要消耗一个时间.求所有人都过河的最短时间. 看网上说是用了什么动态流的神奇东东.其实就是最大流吧, ...

  4. bzoj2095-Bridge

    题意 一个 \(n\) 个点 \(m\) 条边的图,每条边双向都有权值(可能不一样).求从 1 开始,经过所有点,经过所有边一次且仅一次(即一定要经过这条边的某个方向)回到 1 的路径上权值最大的最小 ...

  5. path变量修改后无法保存

    Eclipse启动时出现错误: A Java Runtime Environment (JRE) or Java Development Kit(JDK) must be available in o ...

  6. Python 自动补全(vim)

    一.vim python自动补全插件:pydiction 可以实现下面python代码的自动补全: 1.简单python关键词补全 2.python 函数补全带括号 3.python 模块补全 4.p ...

  7. NOIP赛前集训营-提高组(第一场)#A 中位数

      题目描述 小N得到了一个非常神奇的序列A.这个序列长度为N,下标从1开始.A的一个子区间对应一个序列,可以由数对[l,r]表示,代表A[l], A[l + 1], ..., A[r]这段数.对于一 ...

  8. kindeditor<=4.1.5上传漏洞复现

    0x00 漏洞描述 漏洞存在于kindeditor编辑器里,你能上传.txt和.html文件,支持php/asp/jsp/asp.net,漏洞存在于小于等于kindeditor4.1.5编辑器中 这里 ...

  9. Java之线程池和Lambda表达式

    线程池和lambda表达式 学习线程池和lambda表达式的理解 补充一个知识点(单例设计模式) 在多线程中,我们只需要一个任务类,为了防止创建多个任务类,这个时候就需要用到单例模式,单例模式有两种设 ...

  10. Android O新特性和行为变更总结zz

    https://mp.weixin.qq.com/s/Ezfm-Xaz3fzsaSm0TU5LMw Android O 行为变更https://developer.android.google.cn/ ...