还是导入导出

将格式化的文本数据上载到表中去
以表emp为例
首先编写一个控制命令的脚本文件,通常以ctl结尾,内容如下:
emp.ctl
load data
append
into table emp
fields terminated by ‘|’
(
no                float external,
        name        char(20),
        age                integer external,
        duty                char(1),
        salary        float external,
        upd_ts        date(14) ‘YYYYMMDDHH24MISS’
)
括号里对数据文件里每个数据域进行解释,以此在上载时与目标表进行比对。
除了append外,还有insert、replace、truncate等方式,与append大同小异,不作更多的解释。
再将上载数据组织成数据文件,通常以dat结尾,内容如下:
emp.dat
100000000001|Tom|000020|1|000000005000|20020101000000
100000000002|Jerry|000025|2|000000008000|20020101235959
分隔符要与ctl文件中fields terminated by指定的一致,这个例子中为“|”
ctl和dat文件就绪后可以执行上载,命令为:
sqlldr dbuser/oracle control=emp.ctl data=emp.dat
也可以将dat文件合并在ctl文件中,ctl文件改写为:
emp2.ctl
load data
infile *
append
into table emp
fields terminated by ‘|’
(
no                float external,
        name        char(20),
        age                integer external,
        duty                char(1),
        salary        float external,
        upd_ts        date(14) ‘YYYYMMDDHH24MISS’
)
begindata
100000000003|Mulder|000020|1|000000005000|20020101000000
100000000004|Scully|000025|2|000000008000|20020101235959
控制文件中infile选项跟sqlldr命令行中data选项含义相同,如使用infile *则表明数据在本控制文件以begin data开头的区域内。
这样命令变成:
sqlldr dbuser/oracle control=emp2.ctl
conventional path
通过常规通道方式上载。
rows:每次提交的记录数
bindsize:每次提交记录的缓冲区
readsize:与bindsize成对使用,其中较小者会自动调整到较大者
sqlldr先计算单条记录长度,乘以rows,如小于bindsize,不会试图扩张rows以填充bindsize;如超出,则以bindsize为准。
命令为:
sqlldr dbuser/oracle control=emp.ctl log=emp.log rows=10000 bindsize=8192000
direct path
通过直通方式上载,不进行SQL解析。
命令为:
sqlldr dbuser/oracle control=emp.ctl log=emp.log direct=true
4.2        exp
参见dmp/exp_demo.sh。
将数据库内的各对象以二进制方式下载成dmp文件,方便数据迁移。
buffer:下载数据缓冲区,以字节为单位,缺省依赖操作系统
consistent:下载期间所涉及的数据保持read only,缺省为n
direct:使用直通方式        ,缺省为n
feeback:显示处理记录条数,缺省为0,即不显示
file:输出文件,缺省为expdat.dmp
filesize:输出文件大小,缺省为操作系统最大值
indexes:是否下载索引,缺省为n,这是指索引的定义而非数据,exp不下载索引数据
log:log文件,缺省为无,在标准输出显示
owner:指明下载的用户名
query:选择记录的一个子集
rows:是否下载表记录
tables:输出的表名列表
  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值