日期:2014-05-16 浏览次数:20480 次
? sql loader可以把一些以文本格式存放的数据顺利的导入到oracle数据库中,是一种在不同数据库之间进行数据迁移的非常方便而且通用的工具。缺点就速度比较慢,另外对blob等类型的数据就有点麻烦了。
? sqlldr 有两种使用方法:
? 1. 只使用一个控制文件,在这个控制文件中包含数据?
? 2. 使用一个控制文件(作为模板) 和一个数据文件(如.csv文件)
? 以下是第二种使用方法的控制文件简单Demo:
OPTIONS (skip=1,rows=128) -- sqlldr 命令显示的选项可以写到这里边来,skip=1 用来跳过数据中的第一行 LOAD DATA INFILE "users_data.csv" --指定外部数据文件,可以写多个 --这里还可以使用 BADFILE、DISCARDFILE 来指定坏数据和丢弃数据的文件, truncate --操作类型,用 truncate table 来清除表中原有记录 INTO TABLE users -- 要插入记录的表 Fields terminated by "," -- 数据中每行记录用 "," 分隔 Optionally enclosed by '"' -- 数据中每个字段用 '"' 框起,比如字段中有 "," 分隔符时 trailing nullcols --表的字段没有对应的值时允许为空 ( virtual_column FILLER, --这是一个虚拟字段,用来跳过由 PL/SQL Developer 生成的第一列序号 user_id number, --字段可以指定类型,否则认为是 CHARACTER 类型, log 文件中有显示 user_name, login_times, last_login DATE "YYYY-MM-DD HH24:MI:SS" -- 指定接受日期的格式,相当用 to_date() 函数转换 )
?如上建立名为user.ctl的文件,准备好users_data.csv源数据文件,放在同一文件夹下,再写个批处理文件,即可进行数据到导入。
? 名为user.bat的批处理文件代码如下:
sqlldr userid=scott/anwei@orcl control=user.ctl data=user_data.cvs log=user.log
?执行完 sqlldr 后希望能留意一下生成的几个文件,如 users.log 日志文件、users.bad 坏数据文件等。特别是要看看日志文件,从中可让你更好的理解 Sql Loader,里面有对控制文件的解析、列出每个字段的类型、加载记录的统计、出错原因等信息。
?