oracle 数据导入和导出

数据入库

  • (直接用PLSQL)

1、建表

2、打开“工具”--点击“文本导入”

3、进入文本导入后,在“来自文本文件”侧加载文件

  1. 在“到Oracle”侧选择已经建好的表

   

点击右侧的字段,与你TXT文本相对应

  1. 点击下方“导入”完成数据入库
  • 数据量大(用Oracle服务器)

对于数据量少于100万行的导入(select ... for update)和导出(select)最好用PLSQL查询,然后复制粘贴。

以下方式适合数据量较大(一般是多于100万行的数据)的导入导出,导入导出的数据是txt文本的格式。这种方式一般适合GB级别以及以下的数据文件,否则速度太慢。

数据的导入和导出都可以指定字符集。如果不指定字符集,导入(导出)完以后可以用iconv命令转码:

nohup iconv -f "gbk" -t "utf-8" wsd_201710_lyp.txt>wsd_201710.txt &

文件太大,邮件发不了的时候,可以用Linux上面的命令分割成多个文件:

split -l 1000000 /data02/five/five.txt -d -a 4 five.txt

1准备表已经建好

--登录服务器

[aiuap_cj@JCJK-01 zhanglongkun]$ su - oracle

输入密码

[oracle@JCJK-01 ~]$ cd /data02/zhanglongkun/jiangxi2I_innet/

 

--编辑控制文件XXX.CTL

[oracle@JCJK-01 jiangxi2I_innet]$ cat upload.ctl

load data

characterset utf8 --中文字符集:ZHS16GBK

infile '/data02/jiangxi2I_innet/1701-1712.txt'

append into table TEMP_ZLK_JX2IINNET_IN

fields terminated by "," --分割符

TRAILING NULLCOLS

(CARDID,   --表中对应的行

DEVICE_NUMBER)

 

2入库

[oracle@JCJK-01jiangxi2I_innet]$ sqlldr ZBA_CZC/wY@dssdwcontrol=/data02/jiangxi2I_innet/upload.ctl  log=/data02/jiangxi2I_innet/upload.log rows=1000000 direct=true skip_index_maintenance=TRUE

3、核查

--查看字体显示是否正确

select * from TEMP_ZLK_JX2IINNET_IN

 

--查看是否都导入

select count(*) from TEMP_ZLK_JX2IINNET_IN

 

[oracle@JCJK-01 jiangxi2I_innet]$ wc -l 1701-1712.txt

1885158 1701-1712.txt

数据出库

1、数据量小

直接在PLSQL中导出

 

 

2、数据量大

在服务器中编写.sh文件

#!/bin/sh

for prov_id in `cat prov_id.txt`

do

Sqluldr user=ZBA_C/w8@dssdw

field="||"

charset=ZHS16GBK

log=/bonc/bca/jc_fw/ljt/qrqm/yyyy_${prov_id}.log  file=/bonc/bca/jc_fw/ljt/qrqm/yyyyy_${prov_id}.txt  

query="SELECT DEVICE_NUMBER,CASE      

   and prov_id = '"${prov_id}"'--传参

"

Done

运行命令   nohup sh acpt.sh  > 201802_.log &

不知道什么原因我提取的非常慢后来的做法是,不封装脚本直接在命令界面输入命令

sqluldr

user=ZBA_CZC/w8XnYH@dssdw   --用户和密码

field="||"                                            --分隔符(可以自己定义)

charset=ZHS16GBK                        --编码

log=/bonc/bca/jc_fw/ljt/qrqm/yyyyyy_all.log  file=/bonc/bca/jc_fw/ljt/qrqm/yyyyy_all.txt  查询文件存放位置

 query="SELECT * FROM TEMP_LJT_DN_NET_ALL "  查询语句

分隔符 \r=0x0d

           \n=0x0a

            |=0x7c

            ,=0x2c

            \t=0x09

            :=0x3a

           #=0x23

           "=0x22 

          '=0x27

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值