mssql

推荐列表 站点导航

当前位置:首页 > 数据库 > mssql >

sqlldr装载数据实现代码

来源:网络整理  作者:网络  发布时间:2020-12-10 16:27
本文将详细介绍如何用sqlldr装载数,需要了解更多的朋友可以参考下...
40,Finance,Virginia,15/3/2001
ENTIRE_LINE position(1:29)
for i in 1 .. l_fmts.count
< 2 > 使用fix属性
INTO TABLE DEPT
ID NAME DAT1 DAT2 DAT3
60,"Finance",,Virginia // loc 列将为空
COMMENTS
demo18.dat
(DEPTNO,
20,Accounting,"Virginia,USA"
continueif this(1:1) = '-' // 找每行的开始是否有连接字符 - 有就把下一行连接为一行
40,Finance,Virginia,987268297,This is the Finance
LAST_UPDATED "my_to_date( :last_updated )",
// INFILE * // 要导入的内容就在control文件里 下面的BEGINDATA后面就是导入的内容
=====================================================================================
INFILE *
LAST_UPDATED "my_to_date( :last_updated )" // 使用自定义的函数
DNAME position(*:16), // 这个字段的开始位置在前一字段的结束位置
10,Sql,what
20,Accounting,Virginia,13/04/2001,"This is the Accounting
LOAD DATA
BEGINDATA
// )
DNAME "upper(:dname)",
LOAD DATA
l_return date;
TRAILING NULLCOLS
create or replace
trailing nullcols
// col_2 position(3:10),
Office in Virginia
TRAILING NULLCOLS
DNAME "upper(:dname)",
// col_1 position(1:2),
SQL*Loader: Release 9.2.0.6.0 - Production on 星期一 11月 7 20:20:00 2005
APPEND // 原先的表有数据 就加在后面
DNAME "upper(:dname)",
// col_2 [date "dd-mon-yyy"] TERMINATED BY ',' ,
(
2)SQL> create table t_load(
TRAILING NULLCOLS ************* 表的字段没有对应的值时允许为空
)
INFILE *
// 这样装载会把换行符装入数据库 下面的方法就不会 但要求数据的格式不同
LOC "upper(:loc)",
LAST_UPDATED "my_to_date( :last_updated )",
INTO TABLE table_name // 指定装入的表
Office in Virginia
BEGINDATA
INTO TABLE DEPT
// 当没声明FIELDS TERMINATED BY ','用位置告诉字段装载数据
REPLACE
5)SQL> select * from t_load;
达到提交点,逻辑记录计数3
7 ***** 合并多行记录为一行记录
< 3 > 使用var属性
INFILE demo19.dat "var 3"
badfile 't.bad'
Office in Virginia"
LAST_UPDATED "my_to_date( :last_updated )",
name varchar2(10),
// col_3 position(*:16), // 这个字段的开始位置在前一字段的结束位置
************* 指定的TERMINATED可以在表的开头 也可在表的内部字段部分
'dd/mm/yyyy',
-- FIELDS TERMINATED BY x'09'
3)控制文件 t.ctl 如下
DNAME,
sqlldr userid=lgone/tiger control=a.ctl
< 4 > 使用str属性
Finance,Virginia,13/04/2001
// 装载这种数据: 10,lg,"""lg""","lg,lg"
FIELDS TERMINATED BY ','
1 ***** 普通装载
EXIT when l_return is not null;
INTO TABLE DEPT
DNAME "upper(:dname)",
INFILE demo18.dat "fix 101"
id ,
REPLACE
col_1 , col_2 ,col_filler FILLER // FILLER 关键字 此列的数值不会被装载
if ( l_return is null )
// 下面是另一个列子 第一行的 1 在数据库中将成为 null
COMMENTS
then
dat1 date "mm/dd/yyyy hh24:mi:ss",
)
FIELDS TERMINATED BY ','
INFILE *
LOAD DATA
// 1/5/2000 就是一行 10,Sales,Virginia,1/5/2000

10Accounting Virginia,USA
// 3 告诉每个记录的前3个字节表示记录的长度 如第一个记录的 071 表示此记录有 71 个字节
p_string, 'GMT', 'EST' );
Office in Virginia"
// TRUNCATE // 指定的内容和replace的相同 会用truncate语句删除现存数据
(DEPTNO,

(DEPTNO,
INFILE *
// 当没声明FIELDS TERMINATED BY ',' 时
)
)
Office in Virginia
(DEPTNO,
20,Accounting,Virginia,13/04/2001,This is the Accounting
LOC "upper(:loc)",
Office in Virginia"
INFILE *
30,Consulting,Virginia,14/04/2001 12:02:02,This is the Consulting
// )
1/5/2000 1/5/2000
-40, 40,Finance,Virginia,13/04/2001
function my_to_date( p_string in varchar2 ) return date
REPLACE
LOC "upper(:loc)",
// TERMINATED BY X '09' // 以十六进制格式 '09' 表示的
concatenate 3 // 通过关键字concatenate 把几行的记录看成一行记录
)
BEGINDATA
Office in Virginia"
LOAD DATA
COMMENTS
REPLACE
LOAD DATA
30,Consulting,Virginia,14/04/2001 12:02:02,This is the Consulting\nOffice in Virginia
loop
INTO TABLE DEPT
BEGINDATA
1 jhchen 07-NOV-05 07-NOV-05
-10,Sales,Virginia, -10,Sales,Virginia,
DNAME,
DNAME "upper(:dname)",
(DEPTNO,
)
DNAME,
1)把 excel 数据存为 t.txt 文件,注意文件后缀名为 .txt
50,"Finance","",Virginia // loc 列将为空
INTO TABLE DEPT
30,Consulting,Virginia,14/04/2001 12:02:02,This is the Consulting
BEGINDATA
DNAME "upper(:dname)",
)
Table created.
LOAD DATA
)
告诉sqlldr在每行的末尾找逗号 找到逗号就把下一行附加到上一行
1 10
// INSERT // 装载空表 如果原先的表有数据 sqlloader会停止 默认值
INTO TABLE DEPT
10,Sales,Virginia,01-april-2001,This is the Sales
LOAD DATA
LOC "upper(:loc)",
// col_4 position(1:16),
REPLACE
DNAME "upper(:dname)",
20,Accounting,Virginia,21/6/1999
// col_3 [char] TERMINATED BY ',' OPTIONALLY ENCLOSED BY 'lg'
load data
(DEPTNO,
20lg demo17.dat
DNAME "upper(:dname)",
return l_return;
(DEPTNO,
REPLACE
50,Finance,Virginia,02-apr-2001
INFILE *
new_time( to_date('01011970','ddmmyyyy') + 1/24/60/60 *
10,Sales,Virginia,01-april-2001
// 的列的值的 如果第一行改为 10,Sales,Virginia,1/5/2000,, 就不用TRAILING NULLCOLS了
/
1 jhchen 11/07/2005 20:04:00 2005-11-7 20:04
Office in Virginia
as
demo20.dat
LOC "upper(:loc)",

结果 7C0D0A
REPLACE
FILLER_1 FILLER, // 下面的 "Something Not To Be Loaded" 将不会被装载
REPLACE
end;
)
40,Finance,Virginia
2 jhchen 07-NOV-05 07-NOV-05
TRAILING NULLCOLS
6 ***** 使用自定义的函数 // 解决的时间问题
);
LOC "upper(:loc)",
60,Finance,Virginia,Not a date
(
)
此列中记录是以 a|\r\n 结束的
// col_5 position(3:10) char(8) // 指定字段的类型
---------- ---------- --------- --------- ---------
REPLACE
10510-jan-200009945Spread over three meals.
into table t
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'
append into table t_load
4 ***** position的列子
Office in Virginia|
id position(1:3) nullif // 这里可以是blanks 或者别的表达式
TRAILING NULLCOLS
LAST_UPDATED date 'dd/mm/yyyy'
30,Consulting,Virginia,14/04/2001 12:02:02
BEGINDATA
//////////// 注意begindata后的数值前面不能有空格
9 ***** 载入有换行符的数据
end;
)
dat2 date,
type fmtArray is table of varchar2(25);
FIELDS TERMINATED BY ','
fsdfasj //自动分配一行号给载入 表t 的seqno字段 此行为 1
( seqno RECNUM //载入每行的行号
象这样的数据 用 nullif 子句
// 如: lg,lg,not 结果 lg lg
when others then null;
BADFILE 'c:\bad.txt' // 指定坏文件地址
// 最灵活的一中 可定义一个新的行结尾符 win 回车换行 : chr(13)||chr(10)
==============================================================================
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'
8 ***** 载入每行的行号
LOAD DATA
LOAD DATA
BEGINDATA // 对应开始的 INFILE * 要导入的内容就在control文件里
20,Accounting,Virginia,13/04/2001,This is the Accounting\nOffice in Virginia
10-jan-200002350Flipper seemed unusually hungry today.
INFILE *
INFILE demo20.dat "str X'7C0D0A'"
begin
Office in Virginia
LAST_UPDATED "my_to_date( :last_updated )",
10,Sales,"""USA"""
( DEPTNO,
fasdjfasdfl // 此行为 2 ...
text Position(1:1024))
LAST_UPDATED date 'dd/mm/yyyy'
LOC "upper(:loc)",
INTO TABLE DEPT
'dd/mm/yyyy hh24:mi:ss' );
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'
select utl_raw.cast_to_raw('|'||chr(13)||chr(10)) from dual;
)
(DEPTNO,
BEGINDATA
)
replace
10,Sales, // 其实这3行看成一行 10,Sales,Virginia,1/5/2000
end loop;
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'
07110,Sales,Virginia,01-april-2001,This is the Sales
40,Finance,Virginia,987268297,"This is the Finance
// REPLACE // 原先的表有数据 原先的数据会全部删除
LOAD DATA
40,Finance,Virginia,987268297,This is the Finance\nOffice in Virginia
30,Consulting,Virginia,14/04/2001 12:02:02,"This is the Consulting
(n position(1:2) integer external nullif n='1',
INFILE demo17.dat "fix 101"
LAST_UPDATED date 'dd/mm/yyyy', // 日期的一种表达方式 还有'dd-mon-yyyy' 等
Office in Virginia
INFILE *
LOAD DATA
l_return := to_date( p_string, l_fmts(i) );
LOC "upper(:loc)",
begin
TRAILING NULLCOLS
30,Consulting,Virginia,5/1/2000
************* 下面是表的字段
4)C:\Documents and Settings\cjh>sqlldr userid=jhchen/oracle control=t.ctl
INFILE *
// (
FIELDS TERMINATED BY ','
// (
// col_1 [interger external] TERMINATED BY ',' ,
exception
DNAME "upper(:dname)", // 使用函数
COMMENTS
注意: unix 和 windows 不同 \\n & /n
(DEPTNO,
v position(3:8)
Virginia,
(DEPTNO,
LOAD DATA
30,Consulting,Virginia
LAST_UPDATED "my_to_date( :last_updated )",
REPLACE
LOC
INTO TABLE DEPT
10,Sales,Virginia,01-april-2001,This is the Sales\nOffice in Virginia
INFILE 't.dat' // 要导入的文件
LOC
end if;
08730,Consulting,Virginia,14/04/2001 12:02:02,This is the Consulting
FIELDS TERMINATED BY ','
************* 以下是4种装入表的方式
20,Something Not To Be Loaded,Accounting,"Virginia,USA"
LOAD DATA
fields terminated by X'09'  
(DEPTNO,
// 在表中结果: 10 lg "lg" lg,lg
20,lg,show
10,Sales,Virginia,01-april-2001,"This is the Sales
INFILE *
replace
// 这列子用 continueif list="," 也可以
// 其中1:1 表示从第一行开始 并在第一行结束 还有continueif next 但continueif list最理想
BEGINDATA
// 如 -10,Sales,Virginia,
// INFILE 'tt.date' // 导入多个文件
INTO TABLE DEPT
1/5/2000
5 ***** 使用函数 日期的一种表达 TRAILING NULLCOLS的使用
10,Sales,Virginia,01-april-2001,This is the Sales
20,Accounting,Virginia,13/04/2001
id number,
10,Sales,Virginia,1/5/2000
40,Finance,Virginia,987268297
// TERMINATED BY WRITESPACE // 装载这种数据: 10 lg lg
name ,
2 ***** FIELDS TERMINATED BY WHITESPACE 和 FIELDS TERMINATED BY x'09' 的情况
BEGINDATA
infile *
)
( DEPTNO position(1:2),
load data
Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.
FIELDS TERMINATED BY ','
LOAD DATA

demo19.dat
Office in Virginia
l_return :=
INTO TABLE DEPT
INTO TABLE DEPT
FIELDS TERMINATED BY ','
Office in Virginia
LOAD DATA
40,Finance,Virginia,987268297,This is the Finance
dat1 date,
replace
infile 't.txt'
dat2 date "yyyy-mm-dd hh24:mi:ss"
TRAILING NULLCOLS // 其实下面的ENTIRE_LINE在BEGINDATA后面的数据中是没有直接对应
ENTIRE_LINE ":deptno||:dname||:loc||:last_updated"
这里用 excel 数据做个最简单的测试。
TRAILING NULLCOLS
REPLACE
3 ***** 指定不装载那一列
REPLACE
LOC
INTO TABLE T
07140,Finance,Virginia,987268297,This is the Finance
2 jhchen 11/07/2005 20:04:00 2005-11-7 20:04
LOC position(*:29),
FIELDS TERMINATED BY ','
Office in Virginia|
Office in Virginia|
l_fmts fmtArray := fmtArray( 'dd-mon-yyyy', 'dd-month-yyyy',
INTO TABLE DEPT
FIELDS TERMINATED BY WHITESPACE
< 1 > 使用一个非换行符的字符
)
BEGINDATA
INTO TABLE DEPT
3 jhchen 11/07/2005 20:04:00 2005-11-7 20:04
3 jhchen 07-NOV-05 07-NOV-05
20,Accounting,Virginia,13/04/2001,This is the Accounting
07820,Accounting,Virginia,13/04/2001,This is the Accounting
LOC "upper(:loc)",
Office in Virginia|
10 Sales Virginia
BEGINDATA // 但是好象不能象右面的那样使用
其中,X'09' 是制表符,TAB键,trailing nullcols 表示如表的字段没有对应的值时允许为空。
)
dat3 date
COMMENTS "replace(:comments,'\n',chr(10))" // replace 的使用帮助转换换行符

相关热词:

本站内容来源于网络,如有侵权请与我们联系,我们会及时删除,我们深感抱歉!
注:本站所有信息仅供用于网络技术学习参考,学习中请遵循相关法律法规!

本文地址: https://www.juheyunku.com/sql/mssql/2233.shtml

最新文章
sql server 关于设置null的一 sql server 关于设置null的一

时间:2020-12-28

详解SQL游标的用法 详解SQL游标的用法

时间:2020-12-27

vs code连接sql server数据库步 vs code连接sql server数据库步

时间:2020-12-27

图书管理系统的sqlserver数 图书管理系统的sqlserver数

时间:2020-12-25

详解SQL 通配符 详解SQL 通配符

时间:2020-12-25

sql四大排名函数之ROW_NUM sql四大排名函数之ROW_NUM

时间:2020-12-25

SQLServer数据库处于恢复挂 SQLServer数据库处于恢复挂

时间:2020-12-24

Win10 64位安装个人版SQL20 Win10 64位安装个人版SQL20

时间:2020-12-24

Copyright © www.juheyunku.com      关于 | 合作 | 声明 | 联系 | 更新 | 地图 | Tags

sqlldr装载数据实现代码

2020-12-10 编辑:网络

40,Finance,Virginia,15/3/2001
ENTIRE_LINE position(1:29)
for i in 1 .. l_fmts.count
< 2 > 使用fix属性
INTO TABLE DEPT
ID NAME DAT1 DAT2 DAT3
60,"Finance",,Virginia // loc 列将为空
COMMENTS
demo18.dat
(DEPTNO,
20,Accounting,"Virginia,USA"
continueif this(1:1) = '-' // 找每行的开始是否有连接字符 - 有就把下一行连接为一行
40,Finance,Virginia,987268297,This is the Finance
LAST_UPDATED "my_to_date( :last_updated )",
// INFILE * // 要导入的内容就在control文件里 下面的BEGINDATA后面就是导入的内容
=====================================================================================
INFILE *
LAST_UPDATED "my_to_date( :last_updated )" // 使用自定义的函数
DNAME position(*:16), // 这个字段的开始位置在前一字段的结束位置
10,Sql,what
20,Accounting,Virginia,13/04/2001,"This is the Accounting
LOAD DATA
BEGINDATA
// )
DNAME "upper(:dname)",
LOAD DATA
l_return date;
TRAILING NULLCOLS
create or replace
trailing nullcols
// col_2 position(3:10),
Office in Virginia
TRAILING NULLCOLS
DNAME "upper(:dname)",
// col_1 position(1:2),
SQL*Loader: Release 9.2.0.6.0 - Production on 星期一 11月 7 20:20:00 2005
APPEND // 原先的表有数据 就加在后面
DNAME "upper(:dname)",
// col_2 [date "dd-mon-yyy"] TERMINATED BY ',' ,
(
2)SQL> create table t_load(
TRAILING NULLCOLS ************* 表的字段没有对应的值时允许为空
)
INFILE *
// 这样装载会把换行符装入数据库 下面的方法就不会 但要求数据的格式不同
LOC "upper(:loc)",
LAST_UPDATED "my_to_date( :last_updated )",
INTO TABLE table_name // 指定装入的表
Office in Virginia
BEGINDATA
INTO TABLE DEPT
// 当没声明FIELDS TERMINATED BY ','用位置告诉字段装载数据
REPLACE
5)SQL> select * from t_load;
达到提交点,逻辑记录计数3
7 ***** 合并多行记录为一行记录
< 3 > 使用var属性
INFILE demo19.dat "var 3"
badfile 't.bad'
Office in Virginia"
LAST_UPDATED "my_to_date( :last_updated )",
name varchar2(10),
// col_3 position(*:16), // 这个字段的开始位置在前一字段的结束位置
************* 指定的TERMINATED可以在表的开头 也可在表的内部字段部分
'dd/mm/yyyy',
-- FIELDS TERMINATED BY x'09'
3)控制文件 t.ctl 如下
DNAME,
sqlldr userid=lgone/tiger control=a.ctl
< 4 > 使用str属性
Finance,Virginia,13/04/2001
// 装载这种数据: 10,lg,"""lg""","lg,lg"
FIELDS TERMINATED BY ','
1 ***** 普通装载
EXIT when l_return is not null;
INTO TABLE DEPT
DNAME "upper(:dname)",
INFILE demo18.dat "fix 101"
id ,
REPLACE
col_1 , col_2 ,col_filler FILLER // FILLER 关键字 此列的数值不会被装载
if ( l_return is null )
// 下面是另一个列子 第一行的 1 在数据库中将成为 null
COMMENTS
then
dat1 date "mm/dd/yyyy hh24:mi:ss",
)
FIELDS TERMINATED BY ','
INFILE *
LOAD DATA
// 1/5/2000 就是一行 10,Sales,Virginia,1/5/2000

10Accounting Virginia,USA
// 3 告诉每个记录的前3个字节表示记录的长度 如第一个记录的 071 表示此记录有 71 个字节
p_string, 'GMT', 'EST' );
Office in Virginia"
// TRUNCATE // 指定的内容和replace的相同 会用truncate语句删除现存数据
(DEPTNO,

(DEPTNO,
INFILE *
// 当没声明FIELDS TERMINATED BY ',' 时
)
)
Office in Virginia
(DEPTNO,
20,Accounting,Virginia,13/04/2001,This is the Accounting
LOC "upper(:loc)",
Office in Virginia"
INFILE *
30,Consulting,Virginia,14/04/2001 12:02:02,This is the Consulting
// )
1/5/2000 1/5/2000
-40, 40,Finance,Virginia,13/04/2001
function my_to_date( p_string in varchar2 ) return date
REPLACE
LOC "upper(:loc)",
// TERMINATED BY X '09' // 以十六进制格式 '09' 表示的
concatenate 3 // 通过关键字concatenate 把几行的记录看成一行记录
)
BEGINDATA
Office in Virginia"
LOAD DATA
COMMENTS
REPLACE
LOAD DATA
30,Consulting,Virginia,14/04/2001 12:02:02,This is the Consulting\nOffice in Virginia
loop
INTO TABLE DEPT
BEGINDATA
1 jhchen 07-NOV-05 07-NOV-05
-10,Sales,Virginia, -10,Sales,Virginia,
DNAME,
DNAME "upper(:dname)",
(DEPTNO,
)
DNAME,
1)把 excel 数据存为 t.txt 文件,注意文件后缀名为 .txt
50,"Finance","",Virginia // loc 列将为空
INTO TABLE DEPT
30,Consulting,Virginia,14/04/2001 12:02:02,This is the Consulting
BEGINDATA
DNAME "upper(:dname)",
)
Table created.
LOAD DATA
)
告诉sqlldr在每行的末尾找逗号 找到逗号就把下一行附加到上一行
1 10
// INSERT // 装载空表 如果原先的表有数据 sqlloader会停止 默认值
INTO TABLE DEPT
10,Sales,Virginia,01-april-2001,This is the Sales
LOAD DATA
LOC "upper(:loc)",
// col_4 position(1:16),
REPLACE
DNAME "upper(:dname)",
20,Accounting,Virginia,21/6/1999
// col_3 [char] TERMINATED BY ',' OPTIONALLY ENCLOSED BY 'lg'
load data
(DEPTNO,
20lg demo17.dat
DNAME "upper(:dname)",
return l_return;
(DEPTNO,
REPLACE
50,Finance,Virginia,02-apr-2001
INFILE *
new_time( to_date('01011970','ddmmyyyy') + 1/24/60/60 *
10,Sales,Virginia,01-april-2001
// 的列的值的 如果第一行改为 10,Sales,Virginia,1/5/2000,, 就不用TRAILING NULLCOLS了
/
1 jhchen 11/07/2005 20:04:00 2005-11-7 20:04
Office in Virginia
as
demo20.dat
LOC "upper(:loc)",

结果 7C0D0A
REPLACE
FILLER_1 FILLER, // 下面的 "Something Not To Be Loaded" 将不会被装载
REPLACE
end;
)
40,Finance,Virginia
2 jhchen 07-NOV-05 07-NOV-05
TRAILING NULLCOLS
6 ***** 使用自定义的函数 // 解决的时间问题
);
LOC "upper(:loc)",
60,Finance,Virginia,Not a date
(
)
此列中记录是以 a|\r\n 结束的
// col_5 position(3:10) char(8) // 指定字段的类型
---------- ---------- --------- --------- ---------
REPLACE
10510-jan-200009945Spread over three meals.
into table t
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'
append into table t_load
4 ***** position的列子
Office in Virginia|
id position(1:3) nullif // 这里可以是blanks 或者别的表达式
TRAILING NULLCOLS
LAST_UPDATED date 'dd/mm/yyyy'
30,Consulting,Virginia,14/04/2001 12:02:02
BEGINDATA
//////////// 注意begindata后的数值前面不能有空格
9 ***** 载入有换行符的数据
end;
)
dat2 date,
type fmtArray is table of varchar2(25);
FIELDS TERMINATED BY ','
fsdfasj //自动分配一行号给载入 表t 的seqno字段 此行为 1
( seqno RECNUM //载入每行的行号
象这样的数据 用 nullif 子句
// 如: lg,lg,not 结果 lg lg
when others then null;
BADFILE 'c:\bad.txt' // 指定坏文件地址
// 最灵活的一中 可定义一个新的行结尾符 win 回车换行 : chr(13)||chr(10)
==============================================================================
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'
8 ***** 载入每行的行号
LOAD DATA
LOAD DATA
BEGINDATA // 对应开始的 INFILE * 要导入的内容就在control文件里
20,Accounting,Virginia,13/04/2001,This is the Accounting\nOffice in Virginia
10-jan-200002350Flipper seemed unusually hungry today.
INFILE *
INFILE demo20.dat "str X'7C0D0A'"
begin
Office in Virginia
LAST_UPDATED "my_to_date( :last_updated )",
10,Sales,"""USA"""
( DEPTNO,
fasdjfasdfl // 此行为 2 ...
text Position(1:1024))
LAST_UPDATED date 'dd/mm/yyyy'
LOC "upper(:loc)",
INTO TABLE DEPT
'dd/mm/yyyy hh24:mi:ss' );
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'
select utl_raw.cast_to_raw('|'||chr(13)||chr(10)) from dual;
)
(DEPTNO,
BEGINDATA
)
replace
10,Sales, // 其实这3行看成一行 10,Sales,Virginia,1/5/2000
end loop;
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'
07110,Sales,Virginia,01-april-2001,This is the Sales
40,Finance,Virginia,987268297,"This is the Finance
// REPLACE // 原先的表有数据 原先的数据会全部删除
LOAD DATA
40,Finance,Virginia,987268297,This is the Finance\nOffice in Virginia
30,Consulting,Virginia,14/04/2001 12:02:02,"This is the Consulting
(n position(1:2) integer external nullif n='1',
INFILE demo17.dat "fix 101"
LAST_UPDATED date 'dd/mm/yyyy', // 日期的一种表达方式 还有'dd-mon-yyyy' 等
Office in Virginia
INFILE *
LOAD DATA
l_return := to_date( p_string, l_fmts(i) );
LOC "upper(:loc)",
begin
TRAILING NULLCOLS
30,Consulting,Virginia,5/1/2000
************* 下面是表的字段
4)C:\Documents and Settings\cjh>sqlldr userid=jhchen/oracle control=t.ctl
INFILE *
// (
FIELDS TERMINATED BY ','
// (
// col_1 [interger external] TERMINATED BY ',' ,
exception
DNAME "upper(:dname)", // 使用函数
COMMENTS
注意: unix 和 windows 不同 \\n & /n
(DEPTNO,
v position(3:8)
Virginia,
(DEPTNO,
LOAD DATA
30,Consulting,Virginia
LAST_UPDATED "my_to_date( :last_updated )",
REPLACE
LOC
INTO TABLE DEPT
10,Sales,Virginia,01-april-2001,This is the Sales\nOffice in Virginia
INFILE 't.dat' // 要导入的文件
LOC
end if;
08730,Consulting,Virginia,14/04/2001 12:02:02,This is the Consulting
FIELDS TERMINATED BY ','
************* 以下是4种装入表的方式
20,Something Not To Be Loaded,Accounting,"Virginia,USA"
LOAD DATA
fields terminated by X'09'  
(DEPTNO,
// 在表中结果: 10 lg "lg" lg,lg
20,lg,show
10,Sales,Virginia,01-april-2001,"This is the Sales
INFILE *
replace
// 这列子用 continueif list="," 也可以
// 其中1:1 表示从第一行开始 并在第一行结束 还有continueif next 但continueif list最理想
BEGINDATA
// 如 -10,Sales,Virginia,
// INFILE 'tt.date' // 导入多个文件
INTO TABLE DEPT
1/5/2000
5 ***** 使用函数 日期的一种表达 TRAILING NULLCOLS的使用
10,Sales,Virginia,01-april-2001,This is the Sales
20,Accounting,Virginia,13/04/2001
id number,
10,Sales,Virginia,1/5/2000
40,Finance,Virginia,987268297
// TERMINATED BY WRITESPACE // 装载这种数据: 10 lg lg
name ,
2 ***** FIELDS TERMINATED BY WHITESPACE 和 FIELDS TERMINATED BY x'09' 的情况
BEGINDATA
infile *
)
( DEPTNO position(1:2),
load data
Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.
FIELDS TERMINATED BY ','
LOAD DATA

demo19.dat
Office in Virginia
l_return :=
INTO TABLE DEPT
INTO TABLE DEPT
FIELDS TERMINATED BY ','
Office in Virginia
LOAD DATA
40,Finance,Virginia,987268297,This is the Finance
dat1 date,
replace
infile 't.txt'
dat2 date "yyyy-mm-dd hh24:mi:ss"
TRAILING NULLCOLS // 其实下面的ENTIRE_LINE在BEGINDATA后面的数据中是没有直接对应
ENTIRE_LINE ":deptno||:dname||:loc||:last_updated"
这里用 excel 数据做个最简单的测试。
TRAILING NULLCOLS
REPLACE
3 ***** 指定不装载那一列
REPLACE
LOC
INTO TABLE T
07140,Finance,Virginia,987268297,This is the Finance
2 jhchen 11/07/2005 20:04:00 2005-11-7 20:04
LOC position(*:29),
FIELDS TERMINATED BY ','
Office in Virginia|
Office in Virginia|
l_fmts fmtArray := fmtArray( 'dd-mon-yyyy', 'dd-month-yyyy',
INTO TABLE DEPT
FIELDS TERMINATED BY WHITESPACE
< 1 > 使用一个非换行符的字符
)
BEGINDATA
INTO TABLE DEPT
3 jhchen 11/07/2005 20:04:00 2005-11-7 20:04
3 jhchen 07-NOV-05 07-NOV-05
20,Accounting,Virginia,13/04/2001,This is the Accounting
07820,Accounting,Virginia,13/04/2001,This is the Accounting
LOC "upper(:loc)",
Office in Virginia|
10 Sales Virginia
BEGINDATA // 但是好象不能象右面的那样使用
其中,X'09' 是制表符,TAB键,trailing nullcols 表示如表的字段没有对应的值时允许为空。
)
dat3 date
COMMENTS "replace(:comments,'\n',chr(10))" // replace 的使用帮助转换换行符

本站内容来源于网络,如有侵权请与我们联系,我们会及时删除,我们深感抱歉!
注:本站所有信息仅供学习参考!
本文地址为 https://www.juheyunku.com/sql/mssql/2233.shtml

相关文章

风云图片

推荐阅读

返回mssql频道首页