前言:笔者业务场景:当前表无分区,需将数据导出,创建分区后,重新导入当前表;当然,该方法同样使用于普通的数据迁移,或新旧表数据同步(表结构一致)

一、涉及数据量:5470w+

二、导入方式:sqlloader命令导入

1.导入命令

sqlldr oracle用户/oracle密码  control=/data/bak/ht_user.ctl log=/data/bak/  bad=log=/data/bak/  errors=1000;

如下命令

sqlldr unionpay/123456  control=/data/bak/ht_user.ctl log=/data/bak/  bad=/data/bak/  errors=1000

  • sqlldr 命令无效,检查自己的oracle客户端是否已安装并配置了环境变量,这里不再赘述;
  • ctl文件需事先编辑好,放到对应路径下(格式见第2点);
  • log 和bad是用于打印执行日志和错误日志,执行时间和报错信息都会记录下来,可自定义文件名,无则默认同ctl文件名,如ht_user.log ,ht_user.bad ;
  • errors=1000 表示可忽略的最多的报错行数,默认50行,超过则会中断执行
  • 密码如带有特殊字段,会报错:-bash:  !123456@: envent not found
  • 命令行密码部分需用单引号,如 '!123456@',执行会提示手动输入用户名和密码

2.ctl文件格式 

options(skip=1,ROWS=1000)  --跳过第一行,每次提交1000数据
load data
CHARACTERSET UTF8   --导入文件编码
infile '/home/oracle/ht_users.csv'    --文件
insert into table "HT_USERS"   --表名,必须双引号
fields terminated by ','  --分割符
trailing nullcols   --将所有不在纪录中的指定位置的列当作空值
(
  TRANS_SEQ,
  USER_ACCTNO,
  USER_ACCTTYPE,
  TRANS_AMT  float external,
  TRANS_DATE DATE "YYYY-MM-DD hh24:mi:ss",
  TRANS_DATETIME TIMESTAMP "YYYY-MM-DD hh24:mi:ss:ff",
  USER_CODE,
  USER_NAME,
  USER_STATE,
  USER_PASSWORD
)

  • 表字段为普通的字符格式,不需要特别转化
  • number类型,需字段后加 float external
  • date类型,需加 DATE "YYYY-MM-DD hh24:mi:ss",日期格式根据csv文件实际情况转换
  • TIMESTAMP  需加 TIMESTAMP "YYYY-MM-DD hh24:mi:ss:ff"   时间格式根据csv文件实际情况转换

3.实际效率 3小时

三、据说使用数据泵(expdp/impdp)导出导入dump文件格式效率更高,因笔者没有Root权限,所以没有用该方式;如果简单的数据迁移,也可使用navicat中的数据同步,简单快捷;至于其他导数据的姿势,还没学会,也欢迎评论赐教。

使用sqlloader导入数据(千万级)-oracle相关推荐

  1. sqlloader 导入数据的一点经验教训(最后附我的导入过程)

    sqlloader 导入数据,8.6个G,以nologging方式导入,大概用了25分钟(与服务器性能.插入语句等因素有关)数据文件为csv格式,切分5个CSV文件插入对应的分区表.导入方法都是按标准 ...

  2. MySQL 快速批量创建千万条数据 千万级数据

     MySQL 快速批量创建千万条数据 千万级数据 一.实现思路 1.创建一张users表,数据库引擎调整为: MyISAM 2.使用存储过程实现,用循环语句,批量插入1kw次.( WHILE ... ...

  3. oracle游标处理千万级,Oracle 游标处理

    测试数据 CREATE TABLE test_main ( id INT, value VARCHAR(10), PRIMARY KEY(id) ); INSERT INTO test_main(id ...

  4. oracle数据库函数mod,oracle数据库常用函数

    1.看当前数据库的名字 select name from v$database 2.查看当前数据库实例名 select instance_name from v$instance show param ...

  5. java千万级数据txt文件导入数据库

      最近在做项目的时候,有要把txt文件导入到数据库,txt文件有千万级,如果使用传统的读文件,写数据库,效率很慢.自己按照这种方式使用100万条数据的txt文件导入到oracle数据库,花费了二十多 ...

  6. oracle导出千万级数据为csv格式

    当数据量小时(20万行内),plsqldev.sqlplus的spool都能比较方便进行csv导出,但是当数据量到百万千万级,这两个方法非常慢而且可能中途客户端就崩溃,需要使用其他方法. 一. sql ...

  7. c 导入数据到oracle,excel中数据导入到Orcale数据库表中的方法 | 学步园

    最近我们要做产品的测试,由于里面的数据量太少,上头要我往数据库的表里加上10000条记录.我想如果一条一条地往里加,还不要几个月呀,人也要被累死.所以,我很快地就想到了利用工具加. 就上网搜索,大多介 ...

  8. oracle 论坛 千万级表,Oracle千万级记录操作总结

    Oracle千万级记录进行处理并不简单,下面就为您总结了Oracle千万级记录插入和查询的技巧,希望对您能够有所启迪. 最近做了个项目,实现对存在Oracle千万级记录的库表执行插入.查询操作.原以为 ...

  9. oracle数据插入覆盖,oracle数据库覆盖导入

    oracle数据库备份(导入导出dmp)_IT/计算机_专业资料.包括远程连接 ... oracle数据库导入导出命令_计算机软件及应用_IT/计算机_专业资料.Oracle 数据导入导出 imp/e ...

最新文章

  1. android textview 常用属性id,Android TextView常用属性
  2. 亚信科技公布2019年度业绩,5G商用效果凸显
  3. python的几个实用命令_你不知道的几个Python命令,比Excel好用多了
  4. Hadoop学习笔记—5.自定义类型处理手机上网日志
  5. android mb kb单位转换,存储单位的换算(KB, MB, GB)
  6. 安卓数字倒数控件_大家有什么好用的安卓倒计时APP?
  7. 面向开发者稳定、安心的APP内测托管平台
  8. vue项目性能优化(图片优化)
  9. 软件复用及构件、C/S与B/S混合模型及实战项目技术简述
  10. mysql 6安装当前密码_windows安装mysql数据库并修改密码
  11. Json-server简单实现mock数据
  12. 实验二:交换机基本配置
  13. iOS 解决苹果手机锁屏后APP退出的问题及app状态
  14. 有一篇文章,共有 3 行文字,每行有 80 个字符。编写程序分别统计出其中英文大写 字母、英文小写字母、数字、空格以及其他字符的个数
  15. 梁宁——用户体验地图和用户故事(阅读总结)
  16. -- 34、查询课程名称为“数学“,且分数低于60的学生姓名和分数
  17. 基于SSM和mysql实现的Web便利店收银管理系统实现,Javaweb实现的超市收银平台
  18. 电脑变卡,电脑用久了会变卡怎么办?让电脑变得流畅方法图解
  19. linux 删除java_Linux操作实录--卸载Java,安装Java
  20. 农村土地确权之调查公示 —— 土地确权二轮公示及后续工作注意事项

热门文章

  1. atthesametime啥意思_aroundthesametime和atthesametime的区别是什么
  2. 网页中常见的移动悬浮框的制作
  3. c语言编程修改mac地址,C语言获取本机Mac地址的代码
  4. 利用java调用谷歌浏览器驱动进行网页截图
  5. oracle 系列学习
  6. 还有人不知道B站视频怎么下载?
  7. SpringBoot实现微信支付流程+RabbitMQ消息推送
  8. 两页pdf打印为一页,并且放大(打印英文pdf常用)
  9. 乔布斯VS盖茨:35年硅谷情仇
  10. 久病缠身的电销客服业,晓芯智能如何为其赋能?