SQLLoader是Oracle数据库导入外部数据的一个工具 它和DB 的Load工具相似 但有更多的选择 它支持变化的加载模式 可选的加载及多表加载
如何使用 SQLLoader 工具
我们可以用Oracle的sqlldr工具来导入数据 例如:
sqlldr scott/tiger control=loader ctl
控制文件(loader ctl) 将加载一个外部数据文件(含分隔符)loader ctl如下:
load data infile c:\data\mydata csv into table emp fields terminated by optionally enclosed by ( empno empname sal deptno )
mydata csv 如下:
Scott Tiger Frank Naude
下面是一个指定记录长度的示例控制文件 代表数据文件与此文件同名 即在后面使用BEGINDATA段来标识数据
load data infile replace into table departments ( dept position ( : ) char( ) deptname position ( : ) char( ) ) begindata COSC PUTER SCIENCE ENGL ENGLISH LITERATURE MATH MATHEMATICS POLY POLITICAL SCIENCE
Unloader这样的工具
Oracle 没有提供将数据导出到一个文件的工具 但是 我们可以用SQLPlus的select 及 format 数据来输出到一个文件
set echo off newpage space pagesize feed off head off trimspool on spool oradata txt select col || || col || || col from tab where col = XYZ ; spool off
另外 也可以使用使用 UTL_FILE PL/SQL 包处理:
rem Remember to update initSID ora utl_file_dir= c:\oradata parameter declare fp utl_file file_type; begin fp := utl_file fopen( c:\oradata tab txt w ); utl_file putf(fp %s %s\n TextField ); utl_file fclose(fp); end; /
当然你也可以使用第三方工具 如SQLWays TOAD for Quest等
加载可变长度或指定长度的记录
LOAD DATA INFILE INTO TABLE load_delimited_data FIELDS TERMINATED BY OPTIONALLY ENCLOSED BY TRAILING NULLCOLS ( data data ) BEGINDATA AAAAAAAAAA A B C D 下面是导入固定位置(固定长度)数据示例 LOAD DATA INFILE INTO TABLE load_positional_data ( data POSITION( : ) data POSITION( : ) ) BEGINDATA AAAAAAAAAA BBBBBBBBBB
跳过数据行 可以用 SKIP n 关键字来指定导入时可以跳过多少行数据 如
LOAD DATA INFILE INTO TABLE load_positional_data SKIP ( data POSITION( : ) data POSITION( : ) ) BEGINDATA AAAAAAAAAA BBBBBBBBBB
导入数据时修改数据
在导入数据到数据库时 可以修改数据 注意 这仅适合于常规导入 并不适合 direct导入方式 如
LOAD DATA INFILE INTO TABLE modified_data ( rec_no my_db_sequence nextval region CONSTANT time_loaded to_char(SYSDATE HH :MI ) data POSITION( : ) :data / data POSITION( : ) upper(:data ) data POSITION( : ) to_date(:data YYMMDD ) ) BEGINDATA AAAAAAAAAA BBBBBBBBBB LOAD DATA INFILE mail_orders txt BADFILE bad_orders txt APPEND INTO TABLE mailing_list FIELDS TERMINATED BY ( addr city state zipcode mailing_addr decode(:mailing_addr null :addr :mailing_addr) mailing_city decode(:mailing_city null :city :mailing_city) mailing_state )
将数据导入多个表
如:
LOAD DATA INFILE REPLACE INTO TABLE emp WHEN empno != ( empno POSITION( : ) INTEGER EXTERNAL ename POSITION( : ) CHAR deptno POSITION( : ) CHAR mgr POSITION( : ) INTEGER EXTERNAL ) INTO TABLE proj WHEN projno != ( projno POSITION( : ) INTEGER EXTERNAL empno POSITION( : ) INTEGER EXTERNAL )
导入选定的记录
如下例 ( ) 代表第一个字符 ( : ) 代表 到 之间的字符:
LOAD DATA INFILE mydata dat BADFILE mydata bad DISCARDFILE mydata dis APPEND INTO TABLE my_selective_table WHEN ( ) <>; H and ( ) <>; T and ( : ) = ( region CONSTANT service_key POSITION( : ) INTEGER EXTERNAL call_b_no POSITION( : ) CHAR )
导入时跳过某些字段
可用 POSTION(x:y) 来分隔数据在Oracle i中可以通过指定FILLER字段实现 FILLER 字段用来跳过 忽略导入数据文件中的字段 如
LOAD DATA TRUNCATE INTO TABLE T FIELDS TERMINATED BY ( field field FILLER field )
导入多行记录
可以使用下面两个选项之一来实现将多行数据导入为一个记录:
CONCATENATE: use when SQLLoader should bine the same number of physical records together to form one logical record CONTINUEIF use if a condition indicates that multiple records should be treated as oneEgby having a # character in column
SQLLoader 数据的提交
一般情况下是在导入数据文件数据后提交的 也可以通过指定 ROWS= 参数来指定每次提交记录数
提高 SQLLoader 的性能
( ) 一个简单而容易忽略的问题是 没有对导入的表使用任何索引和/或约束(主键) 如果这样做 甚至在使用ROWS=参数时 会很明显降低数据库导入性能
( ) 可以添加 DIRECT=TRUE来提高导入数据的性能 当然 在很多情况下 不能使用此参数
( ) 通过指定 UNRECOVERABLE选项 可以关闭数据库的日志 这个选项只能和 direct 一起使用
( ) 可以同时运行多个导入任务
常规导入与direct导入方式的区别
lishixinzhi/Article/program/Oracle/201311/18244
1、toad支持将excel或mdb文件导入oracle
2、也可以将excel或mdb文件先导出成txt文本文件,再用oracle的sqlldr命令实现
sqlldr userid=ip/123456 control=cityctl log=citylog direct=true
3、cityctl实例
load data
infile 'city_iptxt'
replace into table city_ip
FIELDS TERMINATED BY ','
OPTIONALLY ENCLOSED BY '"'
(ID, START_IP, END_IP, PROVINCE, CITY, ISP, START_IP_STR, END_IP_STR )
sql数据,这个太笼统了。
一般来说,要导入的数据有这么几类:
1、txt之类的,可以用toad或plsql的导入工具来实现。也可以用sqlldr命令来做。
2、dmp文件(就是之前在其他oracle数据库导出的文件),则用imp命令导入。
Toad for MySQL是一款免费开发工具,可让您快速高效地创建和执行查询、自动执行数据库对象管理,并开发SQL代码。Toad MySQL可提供实用程序,用于比较、提取和搜索对象。MySQL工具还可让您录制和播放键盘命令,并在MySQL数据库之间传输数据。MySQL开发人员工具可帮助管理项目、导入/导出数据和管理数据库,从而提高您的效率。
Toad™ for MySQL可提供以下重要功能:
版本控制集成
让您能够在编辑器中对代码进行登入和登出,从而降低错误风险。
宏录制和播放
使您可以录制和播放键盘命令。
数据库浏览器
重新安排和管理对象及对象类型。
代码片段编辑器
让您能够创建和修改代码片段,以扩展和折叠代码块,从而加快浏览速度。
安全管理器
通过允许或限制用户访问特定Toad功能,让您能够更好地控制系统。
SQL编辑器
让您可以创建、执行、修改和保存查询;查看和编辑数据;以及从一个直观的界面处理DDL命令。
快速的多标签模式浏览器
以图形的形式显示并管理数据库对象。
数据库提取、比较和搜索实用程序
允许您对两个MySQL数据库进行比较,查看差异,及创建脚本来更新目标。
导入/导出实用程序 - 让您能够在MySQL数据库之间传输数据。
插入重复值了,修改要导入的数据源吧,看看有没有冲突
如果要强行导入并允许重复值,那就把primary_18 drop掉
如果是主键的话alter table test_db drop primary key
如果是约束的话drop constraint primary_18
如是是unique索引的话drop index primary_18
以上就是关于简述数据库导入OracleSQL*Loader指南全部的内容,包括:简述数据库导入OracleSQL*Loader指南、如何将Excel导入Oracle数据库、怎么教SQL数据导入到Oracle数据库中 或者生成脚本 、 我都纠结了好几天了等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)