㈠ 如何使用 sql*Loader 工具
SQL*Loader是Oracle数据库导入外部数据的一个工具.它和DB2的Load工具相似,但有更多的选择,它支持变化的加载模式,可选的加载及多表加载.
如何使用 SQL*Loader 工具
我们可以用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 如下:
10001,"Scott Tiger", 1000, 40
10002,"Frank Naude", 500, 20
下面是一个指定记录长度的示例控制文件。"*" 代表数据文件与此文件同名,即在后面使用BEGINDATA段来标识数据。
load data
infile *
replace
into table departments
( dept position (02:05) char(4),
deptname position (08:27) char(20)
)
begindata
COSC COMPUTER SCIENCE
ENGL ENGLISH LITERATURE
MATH MATHEMATICS
POLY POLITICAL SCIENCE
Unloader这样的工具
Oracle 没有提供将数据导出到一个文件的工具。但是,我们可以用SQL*Plus的select 及 format 数据来输出到一个文件:
set echo off newpage 0 space 0 pagesize 0 feed off head off trimspool on
spool oradata.txt
select col1 || ',' || col2 || ',' || col3
from tab1
where col2 = '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','tab1.txt','w');
utl_file.putf(fp, '%s, %s\n', 'TextField', 55);
utl_file.fclose(fp);
㈡ SQL*Loader-522 是什么错误
二种可能,分别如下:
1,由于目标路径根本不存在,SQL×Loader报此错误;
2,若不是1,就是SQL× Loader用户无创建文件的权限.
㈢ SQL*Loader-522 是什么错误
没有修改文件或文件 夹的权限
SQL*Loader-522: lfiopn failed for file (adsP_T.log - shahaizimxm的专栏 - 博客频道 - CSDN.NET
http://blog.csdn.net/xiangmin_meng/article/details/5441868
㈣ sql*loader是个什么东西
sql*loader 是一个程序, 用来把 文本文件里面的数据, 导入到 Oracle 数据库里面。
下面是一个简单的例子:
SQL*Loader
首先需要一个 控制文件test_main.ctl,内容如下:
LOAD DATA
INFILE *
INTO TABLE test_main
FIELDS TERMINATED BY ','
(ID, VALUE)
BEGINDATA
1,Test
其中,
第一行LOAD DATA意思是告诉SQL*Loader,要干啥? 这里是加载数据。
第二行INFILE *意思是数据从哪里来? 这里是包含在控制文件中。
第三行INTO TABLE 意思是数据要导到哪里? 这里是要到 test_main 表。
第四行FIELDS TERMINATED BY意思是数据之间用什么符号分隔? 这里是用 逗号 分隔。
第五行是数据要按什么顺序写到列里面
第六行BEGINDATA是告诉SQL*Loader,后面的都是数据了。
然后开始运行 sqlldr 程序
D:\temp>sqlldr userid=test/test123 control=test_main.ctl
SQL*Loader: Release 10.2.0.1.0 - Proction on 星期日 3月 13 14:58:22 2011
Copyright (c) 1982, 2005, Oracle. All rights reserved.
SQL*Loader-601: 对于 INSERT 选项, 表必须为空。表 TEST_MAIN 上出错
在 SQL Plus 中,
SQL> truncate table test_main;
表被截断。
以后,再次测试执行
D:\temp>sqlldr userid=test/test123 control=test_main.ctl
SQL*Loader: Release 10.2.0.1.0 - Proction on 星期日 3月 13 14:58:56 2011
Copyright (c) 1982, 2005, Oracle. All rights reserved.
达到提交点 - 逻辑记录计数 1
㈤ SQL*Loader-522 是什么错误
可能的原因:
1,由于目标路径根本不存在,SQL×Loader报此错误;
2,不是1,只是SQL× Loader用户无创建文件的权限
或者不要写log文件直接load就好
㈥ 如何使用SQLloader导入数据
1、打开要导出为oracle的Excel,将Excel文件保存为test.txt文件(文件->另存为)
2、创建SQL*Loader输入数据所需要的文件,均保存到C:,用记事本编辑:
控制文件:input.ctl,内容如下:
load data--1、控制文件标识
infile 'test.txt' --2、要输入的数据文件名为.txt,注意路径
append intotable Table_Name --3、向oracle表中追加记录
fields terminatedby X'09' --4、字段终止于X'09',是一个制表符(TAB)
(Col1,Col2…) 定义列对应顺序
a、insert,为缺省方式,在数据装载开始时要求表为空
b、append,在表中追加新记录
c、replace,删除旧记录,替换成新装载的记录
d、truncate,同上
3、在DOS窗口下使用SQL*Loader命令实现数据的输入
C:>sqlldr userid=system/managercontrol=input.ctl
默认日志文件名为:input.log
默认坏记录文件为:input.bad
4、ok,现在就可以查看数据是否导入了。
ORACLESQL Loader的详细语法
SQL*LOADER是ORACLE的数据加载工具,通常用来将操作系统文件迁移到ORACLE数据库中。SQL*LOADER是大型数据仓库选择使用的加载方法,因为它提供了最快速的途径(DIRECT,PARALLEL)。
要使用SQL*Loader,必须编辑一个控制文件(.ctl),及一个数据文件(.dat)
首先,我们认识一下SQL*LOADER
在windows下,SQL*LOADER的命令为SQLLDR,在UNIX下一般为sqlldr/sqlload。
如执行:d:\oracle>sqlldr
用法: SQLLOAD 关键字=值 [,keyword=value,...]
例如:>sqlldr user/pass
control=控制文件名 log=日志文件名
SQL*LOADER参数列表
参数名称
功能描述
Userid
数据库用户名及口令
Control
控制文件名称,描述数据加载的文件信息
Log
日志文件名称,用于记录数据加载过程的信息
Bad
坏信息文件名称,用于记录不符合要求的数据信息
Data
数据文件名称,记录要加载的原始数据
Discard
丢掉文件名称,记载了不满足条件而被过滤的数据
Discardmax
允许丢掉数据量,默认为全部丢掉
Skip
跳过几个逻辑记录,缺省为0
Load
要加载的记录数,默认为全部加载
Errors
允许出现的错误数,缺省为50
Direct
是否使用直接路径加载数据,默认为false
Readsize
缓冲区大小默认为1048576字节
1、首先创建空表
SQL>create table stu(stunonumber(5),name varchar(10),addr
varchar(20));
数据文件格式分为自由格式和固定格式
固定格式数据文件(mydata.txt)
001 SHUI LIAOHE
002 LIU BEIJING
其控制文件分别如下
#Load.ctl
Load data
Infile mydata.txt
Into table stu
(stuno position(01:03) integer external,
Name position(05:08) varchar,
Addr position(10:16) varchar)
导入数据
>sqlldr test1/test1 control=’d:\load.ctl’log=’d:\load.log’
自由格式数据文件(mydata.txt)
003,”shuics”,”new york”
004,”liujianxin”,”Beijing”
005,”shuiym”,”Canada”
其控制文件如下
#load.ctl
Load data
Infile mydata.txt
Append|insert|replace|truncate
Into table stu
Fields terminated by ‘,’
Optionally enclosed by ‘”’
(stuno,name,addr)
导入数据
将Excel数据加载到oracle数据库
1、将excel文件另存为文本文件(制表符分隔)
2、创建控制文件如下
Load data
Infile ‘book.txt’
Append
Into table stu
Fields terminated by X’09’
(stuno,name,addr)
其中X’09’是一个制表符(TAB)
㈦ sqlloader 字符集都有哪些
sql*loader 是一个程序, 用来把 文本文件里面的数据, 导入到 Oracle 数据库里面。
下面是一个简单的例子:
SQL*Loader
首先需要一个 控制文件test_main.ctl,内容如下:
LOAD DATA
INFILE *
INTO TABLE test_main
FIELDS TERMINATED BY ','
(ID, VALUE)
BEGINDATA
1,Test
其中,
第一行LOAD DATA意思是告诉SQL*Loader,要干啥? 这里是加载数据。
第二行INFILE *意思是数据从哪里来? 这里是包含在控制文件中。
第三行INTO TABLE 意思是数据要导到哪里? 这里是要到 test_main 表。
第四行FIELDS TERMINATED BY意思是数据之间用什么符号分隔? 这里是用 逗号 分隔。
第五行是数据要按什么顺序写到列里面
第六行BEGINDATA是告诉SQL*Loader,后面的都是数据了。
然后开始运行 sqlldr 程序
D:\temp>sqlldr userid=test/test123 control=test_main.ctl
SQL*Loader: Release 10.2.0.1.0 - Proction on 星期日 3月 13 14:58:22 2011
Copyright (c) 1982, 2005, Oracle. All rights reserved.
SQL*Loader-601: 对于 INSERT 选项, 表必须为空。表 TEST_MAIN 上出错
在 SQL Plus 中,
SQL> truncate table test_main;
表被截断。
以后,再次测试执行
D:\temp>sqlldr userid=test/test123 control=test_main.ctl
SQL*Loader: Release 10.2.0.1.0 - Proction on 星期日 3月 13 14:58:56 2011
Copyright (c) 1982, 2005, Oracle. All rights reserved.
达到提交点 - 逻辑记录计数 1
㈧ SQL*Loader-522 是什么错误
使用demo用户登陆OS
切换到demo用户的主目录/home/demo下
(此目录下有两个文件test.ctl和test.dat
其中test.ctl是SQL*Loader的控制文件
test.dat是SQL*Loader用到的数据文件)
执行如下命令:
sqlldr test/test control=test.ctl