Load data --加载数据
append into table TEST --数据表TEST
fields terminated by ':' --每行日志以“:”分隔
trailing nullcols
(----下面为表中属性
DNAME "nvl(:DNAME,'-')", --如果DNAME为null,则插入默认值“-”
MENO,
ID "SEQ_TEST.nextval" --调用序列
)
在这里需要注意:如果要使用序列,就不能加DIRECT=TRUE
执行命令:
sqlldr userid=帐号/密码@SID control=f:\test.ctl data=f:\test.log
参考链接:
http://hi.baidu.com/danghj/blog/item/393dca1baf79faddad6e75dd.html
http://topic.csdn.net/u/20090901/16/6f47eca3-169b-4ecc-9e6c-063055d9a392.html
http://wxy0327.itpub.net/post/16888/96826
http://chinapkw.iteye.com/blog/568948
========================================================20101119补充
如何定时使用shell导入数据
vi import_data.sh
内容:
. /home/oracle/.bash_profile
lastLogDate=`date -d "-1 minute" +%Y%m%d.%H.%M`
/data/oracle/10.2.0.1/bin/sqlldr userid=webtrace/webtrace@webtrace control=/data/jsp/wt.39.net/WebRoot/clt/import_data_to_db.ctl data=/data/jsp/wt.39.net/log4j/trace/base.log.$lastLogDate log=/data/oracle/info/trace_info.log.$lastLogDate bad=/data/oracle/bad/trace_bad.log.$lastLogDate
先获取上一分钟 再执行sqlldr
其中sqlldr的参数的意思是:
control为控制脚本路径
data为源数据文件路径
bad为插入失败的数据日志,用于后期重新执行插入用
log为插入执行日志
最后写个定时任务
定时任务我是在oracle用户下用crontab做
这里需要注意
1.import_data.sh和 import_data_to_db.ctl 这两个文件是在resin用户下的,那么需要chmod 755,这样oracle账户下才能执行,否则会出现无权限
2.用sh直接执行shell和在crontab直接执行shell是有区别的,由于我对shell还是入门级,问了朋友很久才知道,要在shell文件内增加oracle的环境变量
即. /home/oracle/.bash_profile 这句话,否则在执行sqlldr会报如下异常:
Message 2100 not found; No message file for product=RDBMS...... facility=UL
3.如果你不确定crontab是否有执行任务可以这么设置,
*/1 * * * * /data/jsp/xxxx/WebRoot/task/import_data_to_db.sh >/data/oracle/mc.log 2>/data/oracle/mc.err
这样如果有异常你可以到/data/oracle/mc.log这里查看
参考网址:
http://hi.baidu.com/danghj/blog/item/393dca1baf79faddad6e75dd.html
http://linjianqing.iteye.com/blog/501563
http://bbs.chinaunix.net/archiver/?tid-851346.html
http://www.lslnet.com/linux/dosc1/38/linux-277903.htm
另外在ctl控制文件中,如果要根据判断条件有选择的插入数据,
eg:
我要判断值不为空才插入
Load data
append into table TEST
WHEN DNAME != ''
fields terminated by '`'
trailing nullcols
(
ID "SEQ_TEST.nextval",
DNAME,
MENO
)
多了个when
具体的例子可看这个网址:
http://space.itpub.net/7607759/viewspace-623965
http://www.itpub.net/threadqui.php?id=3&tid=869886(3楼)
http://hi.baidu.com/danghj/blog/item/393dca1baf79faddad6e75dd.html
===============================2011-03-21==============================================
今天发现一个问题 导入数据总是有一两条发现导入不进去 报了个
Field in data file exceeds maximum length 异常
查了一下才知道原来ctl文件,默认的值长度只是255,但是我这个字段刚好是超过,郁闷,需要指定字段值的长度,如下
REFER_URL char(3000) "nvl(:REFER_URL,'-')",
分享到:
相关推荐
Oracle的SQL*Loader(简称SQLLDR)工具就是这样一个强大的数据加载器,它能快速高效地将数据从外部文件批量导入到数据库中。结合批处理(BAT)脚本,我们可以自动化这个过程,提高工作效率。下面我们将详细探讨如何...
- `log=log_file.log`:日志文件,记录导入过程。 - `bad=bad_file.bad`:错误文件,包含导入失败的记录。 - `discard=discard_file.dsc`:废弃文件,存放未使用的数据行。 四、优化数据导入 1. 分区导入:如果目标...
这里,`user/pass@database`是数据库连接信息,`CONTROL`指定了控制文件,`LOG`用于记录导入过程的日志。 通过这样的方式,你可以高效地处理大量数据的导入和导出,尤其在数据迁移、备份和分析场景中,spool和...
- **错误处理**:设置SQL*Loader的错误日志和限制,以便处理导入过程中遇到的问题,如坏记录、数据类型不匹配等。 - **性能优化**:使用绑定变量、直方图加载、大块读取等技术提升加载速度。 - **事务管理**:根据...
sqlldr提供了多种处理策略,可以通过控制文件设置错误处理选项,如忽略错误、停止导入或者将错误记录到日志文件。 此外,sqlldr还支持一些高级特性,如: - **绑定变量**:允许使用变量进行动态数据加载,适用于...
在使用SQL*Loader工具导入数据时,可能会遇到超出字符长度限制的错误。这类问题通常出现在需要将包含较长字符串的数据加载到表中时,而目标列定义的长度不足以容纳实际数据的情况。本文将围绕SQL*Loader字符长度错误...
2.可视导入信息反馈,可查看错误数据及导入日志。 3.内含 批处理 执行方法 及 导入 ldr Demo文件。 4.内含导数据时不触发触发器方案。 效果可查看:https://blog.csdn.net/rrrgy236116/article/details/90903143
SQL*Loader(简称sqlldr)是Oracle数据库提供的一款强大的数据加载工具,用于高效地将大量数据从外部文件导入到数据库表中。在这个场景下,我们关注的是如何利用sqlldr将Excel数据快速批量地导入到Oracle数据库。...
SQL*Loader,简称sqlldr,是Oracle数据库系统中用于快速加载大量数据到数据库的一个实用工具。它是Oracle Data Pump的一部分,提供了高效的数据导入功能,适用于批量处理大数据量的场景。 1. **sqlldr简介** SQL*...
参数parfile指定了高密度的sqlldr导入脚本,避免了写参数的麻烦。 parallel 参数parallel指定了是否使用并行导入,仅在直接路径加载时有效。 file 参数file指定了并行加载时要加载的文件内容。 skip_unusable_...
SQL*Loader默认使用直接路径加载,这种模式下,数据直接写入数据文件,跳过了Redo日志,从而提高了导入速度。但要注意,这可能导致并发问题,因为在直接路径加载期间,表可能不可用于其他用户。 8. **使用游标加载...
使用类似`sqlldr userid=system/manager@orcl control=test.ctl`的命令来执行导入操作。 以上两个实例展示了SQL Loader的基本使用方法及其灵活性,可以根据具体需求调整控制文件的内容来实现高效的数据导入。通过...
通过执行`sqlldr username/password@database control=ldr_object.ctl log=loader_log.log`命令,其中`username`、`password`是数据库连接的凭证,`database`是数据库连接字符串,`control`指定控制文件,`log`定义...
3. **运行SQL*Loader**:使用`sqlldr`命令执行控制文件,将数据从文件导入到数据库。例如: ``` sqlldr username/password@database control=control_file.ctl log=log_file.log ``` 4. **检查和验证**:导入...
- 性能优化:通过并行加载、批量提交、使用直接路径加载等方式提高数据导入速度。直接路径加载绕过PGA(程序全局区),直接写入数据文件,减少了内存开销,但会锁定表,不适合在线环境。 5. SQL*Loader的适用场景...
- **检查加载日志**:SQL*Loader会在运行过程中生成日志文件,用于查看导入结果和错误信息。 **3. 使用案例** 在提供的压缩包中,可能会包含一个或多个示例,展示如何使用SQL*Loader将数据导入到特定的Oracle表中。...
结合`Spool`和`SQL*Loader`,我们可以创建一个自动化流程,先使用Spool收集SQL查询结果,然后将结果保存到CSV文件,最后使用SQL*Loader将这些数据导入到数据库。这样的流程对于数据迁移、备份和分析非常有帮助。 在...
4. **检查日志和坏文件**:导入过程结束后,检查日志文件以确认是否成功,如果有错误,可以通过坏文件进行问题排查。 5. **优化和调整**:根据导入性能和错误情况,可能需要优化控制文件,比如调整批处理大小、错误...
它允许用户自定义数据导入的逻辑,例如如何分割字段、如何识别记录的开始和结束、如何处理特殊数据等。 SQL*Loader的基本特点包括: 1. 能够装入不同数据类型的文件,包括多个数据文件的数据。 2. 可装入固定格式...
这里`INFILE *`表示从标准输入读取数据,`BADFILE`定义了错误日志文件,`DATE`关键字后跟日期格式定义了时间字段的解析方式。 ### 性能优化 SQL*Loader提供了两种优化加载速度的方法: 1. **DIRECT PATH**: 直接...