Skip to content

olh2012/OracleDataToolkit

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

19 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Oracle快速导数工具

Oracle快速导数工具,用于从Oracle数据库导出表数据或将表数据导入Oracle,使用集中配置管理数据源,简化了原来的导入导出繁琐步骤,特别适合数据量比较大的情况。

背景说明

在工作中,大部分应用的后台数据库均采用Oracle,在平时的开发、测试及运维当中,经常涉及数据的导入导出操作,当数据量不大时,采用直接执行SQL语句的方式,当时涉及大量数据时,推荐使用 sqlldr(导入)和sqluldr2(导出)。但是在使用过程中仍然有不方便的地方,比如执行导入时,需要准备CTL文件,同时还需要准备好执行的命令行脚本,还存在脚本中暴露数据库密码明文的问题,不符合安全规定,为此,本人开发了基于Oracle的数据快速导入导出工具。

目录说明

├───bin    命令行工具目录
├───ctl    控制文件目录(导入)
├───data   数据文件目录(导入、导出共用)
├───log    日志文件目录(导入)
└───sql    SQL文件目录(导出)

数据库选择

  1. 编辑 数据库设置.txt,可以修改数据库的相关配置,修改dataSource选项可切换当前活动的数据库;
  2. 在程序执行界面选择 切换数据库 会临时将数据库切换到另外的配置,但是不会把修改保存到 数据库设置.ini,在选择界面中只显示前面9个数据库(超过请直接修改配置文件);
  3. 在打开程序或执行切换数据库操作之后,会自动进行数据库连接测试;如果连接失败,可以修改配置后再重新选择数据库。

数据导出

  1. 表数据的原样导出,可以直接在sql目录中的table_list.txt文件中添加表名(可以在表名之后添加条件),多个表名以换行分隔;
  2. 通过SQL查询语句的数据导出,将导数SQL文件放到sql目录中;
  3. 双击执行 快速导数.bat,选择 导出数据 菜单,等程序执行完毕之后可在data目录可以看到相应的数据文件;
  4. 表清单中导出的数据,文件名与表名一致;SQL文件导出的数据,主文件名与SQL文件一致。

数据导入

  1. 将数据文件放到数据文件目录下,目前程序限定仅导入扩展名为CSV、TXT的文件;
  2. 打开 数据库设置.ini 选择装载模式,取值有 Insert(要求表为空)、Append(追加方式)、Replace(替换旧记录)、Truncate(装载前截断表);
  3. 双击执行 快速导数.bat,选择 导入数据 菜单;
  4. 如果文件类型为CSV文件且控制文件不存在,程序会根据数据文件自动生成控制文件;
  5. 如果是其他类型的文件,请先准备好控制文件,否则导入时会提示控制文件不存在并跳过;
  6. sqlldr默认的列长度最大不超过256字节,如果超过此限制要在CTL文件中指明具体长度,如 ADD_DATA CHAR(4000) 注意不能用VARCHAR;
  7. 在生产环境执行导入时,需输入YES(全部大写)以确认该操作;
  8. 在执行导入时,文件类型为CSV的将跳过首行,而TXT类型的跳过的行数为0;
  9. 文件导入完毕会有结果提示;
  10. 执行完大数据量的导入操作后,建议执行统计信息分析,参考语句:
dbms_stats.gather_table_stats(ownname => '模式名',tabname => '表名', cascade => TRUE,estimate_percent => 10)

查看结果:

  1. 程序执行过程中会在屏幕输出关键提示信息;
  2. 要查看详细的日志信息可直接打开日志目录中相应的文件查看。

其他说明:

  1. 程序下载后,如果发现文件换行符是LF,需要转换为CRLF(主要是 快速导数.bat数据库设置.inisql\table_list.txt文件);
  2. 程序界面中的各个菜单选择或选项确定可以使用鼠标左键点击(仅32位系统),也可以使用提示的键盘按键;
  3. 数据库密码配置项为dbPassword(明文),但强烈建议用加密的密码配置项dbEncPassword(加密方式:Base64);
  4. 如果电脑中没有其他可进行Base64加密的工具,可以使用系统自带的命令行实现:
certutil -encode password.txt password.out

其中password.txt文件存储了密码明文,password.out是一个用于存储密文的文件,如果原来这个文件存在请先删除。

frank 建议或Bug反馈: franka907@126.com

About

Oracle快速导入导出命令行工具

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published