简述数据库导入OracleSQL*Loader指南

简述数据库导入OracleSQL*Loader指南,第1张

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数据库中 或者生成脚本 、 我都纠结了好几天了等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9316212.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-27
下一篇 2023-04-27

发表评论

登录后才能评论

评论列表(0条)

保存