使用sqlldr将文件中的数据导入到数据库

1.创建数据文件:

?如,在D:\创建 zhaozhenlong.txt 文件,文件内容为:

11,12,13
21,22,23
31,32,33

2、创建控制文件:

如,在D:\创建 zhaozhenlong.ctl 文件,文件内容为:

load da ta
infile ‘d:\zhaozhenlong.txt‘
append into table zhaozhenlong
fields terminated by ‘,‘
(c1,c2,c3)

3、在数据库中创建表:

create table zhaozhenlong(c1 varchar(20),c2 varchar(20),c3 varchar2(20));

4、在‘开始’/‘运行’中,执行:

sqlldruserid=cs/[email protected] control=d:\zhaozhenlong.ctl

5、查询数据库:

select * from zhaozhenlong

结果为:

?C1 C2 C3
1 11 12 13
2 21 22 23
3 31 32 33

?

例2:

?

?关于 oracle 中 sqlldr 的用法

2005-12-30 21:13:49
大 中 小
这几天研究了一下 sqlldr 的用法,今天在这里写出来供有需要的同行享用.
现在有一个文件 Output.txt 内容如下:
?
Ivy,Lam,PR02004,2005,09,21,17,32,00,I,D,Main Door,PR,
Carmen,Siu,AC04023,2005,09,21,17,32,01,I,D,Main Door,Account,
Xing,Lee,CM06021,2005,09,21,17,32,02,I,D,Main Door,Communications,
Barry,Yu,MK05006,2005,09,21,17,32,02,I,D,Main Door,Marketing,
Overtime,nil,OV0001,2005,09,21,17,32,07,I,D,Main Door,Product,
Sammy,Mow,SA02322,2005,09,21,17,32,09,I,D,Main Door,Sales,
Emily,Fu,CM06024,2005,09,21,17,32,10,I,D,Main Door,Communications,
Stella,Chow,PT02145,2005,09,21,17,32,11,I,D,Main Door,Product,
?
是有规律的数据,中间都是用","分开的,现在我要将此文件导入到 oracle 中:
?
第一步,当然是建表,上面有一行中有几个数据就建几个字段.
?
二,写一个 *.ctl 的文件,内容如下
?
load da ta
infile ‘D:\owen\work\CardAttendence\Completed\windows\Output.txt‘
badfile ‘D:\owen\work\CardAttendence\Completed\windows\Output.bad‘
append
into table system.card_time_original
fields terminated by ","
(lName,fName,emp_id,year,month,day,hour,minute,second,inOut,status,doorName,dept)

三,在 doc 窗口下输入如下命令
?
sqlldruserid=system/[email protected] control=D:\owen\work\CardAttendence\Completed\windows\imp ortOne.ctl log=D:\owen\work\CardAttendence\Completed\windows\imp ort.log
?
注意:这里一定要是当前用户对此表有所有权限, 还有一定不能用 sys 用户,要不然会出错
?
如果要将此数据导入到两个表中(结构相同),那么可以把控制文件改为如下所示:
?
load da ta
infile ‘D:\owen\work\CardAttendence\Completed\windows\Output.txt‘
badfile ‘D:\owen\work\CardAttendence\Completed\windows\Output.bad‘
append
into table system.card_time_original
WHEN lName != ‘ ‘
fields terminated by ","
(lName POSITION(1),fName,emp_id,year,month,day,hour,minute,second,inOut,status,doorName,dept)
into table system.card_time_original_bak
WHEN lName != ‘ ‘
fields terminated by ","
(lName POSITION(1),fName,emp_id,year,month,day,hour,minute,second,inOut,status,doorName,dept)
?

FAQ_SQLLDR用法总结

在数据仓库项目实施过程中,ETL是重要的一环,实施的好与坏,关系到项目的成功与否。
在数据抽取领域,相应的工具有IBM DataStage,Informatica PowerCenter,这里介绍Oracle自带的SQLLODER,
这是在Oracle数据仓库实施过程中最容易掌握的工具。在介绍之前,先考虑下面问题:

?一、注意SQLLDR要解决的问题,即实现ETL过程的问题

1、导入表的数据类型为日期类型

2、导入数据过程中的转换问题

3、导入数据过程中的过滤问题

4、导入数据过程中的截取问题

5、导入空列在转换时可能会遇到的问题

6、导入数据的分割符问题,如逗号,制表符,空白符都是常见的

用法:

二、控制文件:一个控制命令的脚本文件,通常以ctl结尾,Test.ctl内容如下:

?

LOAD DA TA

INFILE ‘F:\SQLLDR\da ta.txt‘

INFILE ‘F:\SQLLDR\da ta2.txt‘ //可以从多个文件导入数据

// INFILE * //导入的内容在本文件最后的BEGINDATA后面就是导入的内容

INTO TABLE sdata.T_TEST

?

//四种装载方式,四选一

APPEND // 原先的表有数据 就加在后面

// INSERT //装载空表 如果原先的表有数据 sqlloader会停止 默认值

// REPLACE // 原先的表有数据 原先的数据会全部删除

// TRUNCATE // 指定的内容和replace的相同 会用truncate语句删除现存数据

?

//过滤装载的数据

WHEN T_DATE = ‘2007-07-02‘ //大于和小于等其它比较还没解决

?

//指定分割符

FIELDS TERMINATED BY ‘,‘ // x‘09‘ (制表符)

-- FIELDS TERMINATED BY WHITESPACE //以空白分割,实际这样分割危险

OPTIONALLY ENCLOSED BY ‘"‘

TRAILING NULLCOLS // 表的字段没有对应的值时允许为空 ,这句很有用,默认加的好

?

//表的字段,可以在里面大做文章

(

T_ID FILLER, // FILLER 关键字 此列的数值不会被装载

T_DATE "CASE WHEN :T_DATE is null THEN TO_DATE(‘2999-12-31‘,‘yyyy-mm-dd‘) ELSE TO_DATE(:T_DATE,‘yyyy-mm-dd‘) END",

?//日期类型特别说明,并且要指定其格式

//更一般的格式是T_DATE date ‘yyyy-mm-dd’

T_NAME POSITION(3:6) "UPPER(:T_NAME)", //用位置POSITION来告诉装载的数据

//"UPPER(:T_NAME)" 转换为大写,注意冒号

T_SEX position(*:8) , // 这个字段的开始位置在前一字段的结束位置

ENTIRE_LINE "UPPER(:T_NAME||:T_SEX)" //连接并转换为大写

)

?

/****可继续 插入数据到其他表

INTO TABLE sdata.T_TEST

INSERT

WHEN T_DATE = ‘2007-07-02‘ ? //大于和小于等其它比较还没解决

.//BEGINDATA // 与前面的INFILE?*对应,一般不会这样用吧?

//1,ajsdlkfjsdkl,0?

?

三、运行方法

命令窗口执行:

sqlldruserid=sdata/sda[email protected] control=F:\SQLLDR\Test.ctl?

为了方便,一般写个bat 文件,在bat文件中输入上述的内容即可,最后在命令窗口中运行这个bat文件,原理是一样的。

总之,这其实是Oracle中的一个用法而已。

三、

对不规则数据源的处理

?

--TRAILING NULLCOLS // 表的字段没有对应的值时允许为空,这句很有用

例如:

对于由EXCEL文件导出成CSV文件时,有的行末没有数据会缺少分割符,这在DS中会报错的,在SQLLD

时间: 2024-11-03 22:42:05

使用sqlldr将文件中的数据导入到数据库的相关文章

[Python]将Excel文件中的数据导入MySQL

Github Link 需求 现有2000+文件夹,每个文件夹下有若干excel文件,现在要将这些excel文件中的数据导入mysql. 每个excel文件的第一行是无效数据. 除了excel文件中已有的数据,还要添加一列,名为“at_company”,值为821. 流程 (1)获取excel文件列表,并根据excel文件名确定之后需要创建的table名: (2)连接mysql (3)创建table (4)插入数据 (5)断开连接 依赖模块 1. xlrd # to read excel fil

将CSV文件中的数据导入到SQL Server 数据库中

导入数据时,需要注意 CSV 文件中的数据是否包含逗号以及双引号,存在时,导入会失败 选择数据库 -> 右键 -> 任务 -> 导入数据 ,然后根据弹出的导入导出向导(如下图)中的提示内容进行操作即可. 原文地址:https://www.cnblogs.com/daochangone/p/9134718.html

如何把Excel中的数据导入到数据库

NPOI: using NPOI.HSSF.UserModel; using NPOI.SS.Formula.Eval; using NPOI.SS.UserModel; using NPOI.XSSF.UserModel; using System; using System.Data; using System.IO; namespace ZZAS.HNYZ.GPSInstallManage.Common { public class ExcelHelper : IDisposable {

将Excel表中的数据导入到数据库

网上查到的有参考价值的就一家,自己调试发现可行.感谢原创文章:将Excel中数据导入数据库(一) 1 1 using System; 2 2 using System.Collections.Generic; 3 3 using System.Linq; 4 4 using System.Web; 5 5 //using System.Web.UI; 6 6 //using System.Web.UI.WebControls; 7 7 using System.Data; 8 8 using S

把excel中的数据导入到数据库中的通用方法

方法/步骤 对于把大量数据存放到数据库中,最好是用图形化数据库管理工具,可是如果没有了工具,只能执行命令的话这会是很费时间的事.那我们只能对数据进行组合,把数据组成insert语句然后在命令行中批量直行即可.   我们对下面数据进行组合,这用到excel中的一个功能. 在excel中有个fx的输入框,在这里把组好的字符串填上去就好了. 注:字符串1 & A2 &字符串2 & ... A2可以直接输入,也可以用鼠标点对应的单元格.   每个字符串之间用 & 符号进行连接.下面

SpringMVC框架简单实现上传Excel文件,并将Excel中的数据导入mySQL数据库

第一步 配置DispathcherServlet文件 第二步 配置applicationContext文件 第三步 在index.jsp中 第四步 在HelloSpringmvc.java中写入方法 第五步:与数据库进行连接 第六步 mySQL实体类 第七步 操作excel表 第八步 Dao文件 第九步 测试

文件(csv/xslx)中的数据导入到数据库中

*.sql文件导入数据库通常比较方便. 其他格式如csv.xsl等文件导入比较费劲. 推荐一个针对csv\xsl的导入工具:https://github.com/zhengze/file_to_db.git 具体用法请看README: load data from csv/xlsx into database(mysql/postgresql) INSTALL pipenv install #或者 pip install -r requirements.txt CONFIG $sudo touc

通过Navicat将Excel表中的数据导入到数据库

Navicat.Excel 1)首先创建测试表“student”,表结构为: 2)然后准备编写好的Excel数据表: 3)在Navicat选择student表,右键“导入向导”,弹出如下窗口,我们选择“Excel”: 4)点击“下一步”,“导入从”选择刚刚建好的Excel表,点击“下一步”,弹出如下窗口,这里注意选择好对应的“Sheet”: 5)点击“下一步”,进行一些设置: 6)点击“下一步”,选择已有的表还是新建表: 7)点击“下一步”,对应数据库中student表和excel表的栏位: 8

把excel中的数据导入到数据库

import.php <?php header("Content-Type:text/html;charset=utf-8"); echo '<html> <body> <form action="import.php" method="post" enctype="multipart/form-data"> <label for="file">File