开发者社区> 问答> 正文

怎么快速的导入数据

linux主机,oracle数据库
怎么快速的导入数据。
数据量在200万条左右,文件是文本格式,每一行为一条记录,每条记录的字段以|号分格。
现在用C写的导入程序,处理这200万条数据大概需要6个小时,这完全不能满足需求。
请问有什么方法能够做到快速导入,最好能在1个小时内完成。

展开
收起
a123456678 2016-06-20 15:32:04 2072 0
1 条回答
写回答
取消 提交回答
  • 自己解决了。用sqlldr
    先写一个insert.ctl文件

    load data
    infile '20141010_1_3gpostuser_759.txt'
    append into table BI_3G_POSTPAYUSER_T
    fields terminated by '|' #字段分割符
    (
    row1,
    row2 ,
    ……
    )
    注:因为我这个数据是追加,所以用append,如果纯插入空表,可以用insert。
    除此外还有其他几种方式
    REPLACE // 原先的表有数据 原先的数据会全部删除 
    TRUNCATE // 指定的内容和replace的相同 会用truncate语句删除现存数据。
    再写个insert.sh,用来执行。因为我这要导三个文件,用了个循环。
    
    #!/bin/sh
    #最好把环境变量也引入下
    filelist=$(ls)
    for file in $filelist
    do
        sed -i "s/20.*_3gpostuser_7.*\.txt/${file}/g" /home/interface/insert.ctl
        sqlldr user/pass@sid  control=/home/interface/insert.ctl #控制器路径
        mv $file ../bak/$file'.bak'
    done
    2019-07-17 19:44:11
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载