`
streamsong
  • 浏览: 82224 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

SQL*LOADER加载图片、TXT

阅读更多

朋友打电话问我如何利用sql讲mysl导出的文本数据加载到oracle数据库,电话说了他也没听清楚,我做了如下实验,给他做例子:
一、加载txt文本
1.在D盘建立sqlldr的控制文件,111.ctl 内容如下
LOAD DATA
INFILE 'd:\111.txt'
INTO TABLE SALGRADE_TEST
TRUNCATE
FIELDS TERMINATED BY ','
(GRADE,LOSAL,HISAL)
2.在D盘建立sqlldr的数据文件111.txt,内容如下格式
1,700,1200
2,1201,1400
3,1401,2000
4,2001,3000
5,3001,9999
3.在CMD的命令行模式执行加载操作
sqlldr scott/tiger control=d:\111.ctl log=d:\111.log bad=d:\111.ba
SQL*Loader: Release 11.2.0.1.0 - Production on 星期三 9月 14 10:58:35 2011
Copyright (c) 1982, 2009, Oracle and/or its affiliates.  All rights reserved
达到提交点 - 逻辑记录计数 4
达到提交点 - 逻辑记录计数 5
4.登录数据库验证加载结果
D:\window\server\mysql-5.1.51\bin>sqlplus scott/tiger
连接到:
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
SQL> select * from SALGRADE_TEST;
GRADE      LOSAL      HISAL
---------- ---------- ----------
         1        700       1200
         2       1201       1400
         3       1401       2000
         4       2001       3000
         5       3001       9999
5.导入成功之后,查看111.log
6.注释
LOAD DATA 控制文件标识
INFILE 'd:\111.txt'为数据文件地址和名称,此处如果是INFILE *表示要加载的数据就在这个控制文件里,也就是BEGINDATA后面跟的内容。详见7
INTO TABLE SALGRADE_TEST要往SALGRADE_TEST表里加载数据
TRUNCATE如果表里有数据,先truncate表,然后再加载,TRUNCATE还可换成其他值,比如
insert,为缺省方式,在数据装载开始时要求表为空,如果表中有数据,会报错而终止。
SQL*Loader-601:  对于 INSERT 选项, 表必须为空。表 SALGRADE_TEST 上出错   
append,在表中追加新记录,如果。表上有主键和唯一性约束,新加载的数据的相关字段值不能重复
replace,删除旧记录,替换成新装载的记录 ,要求有delete权限
truncate,同上,要求有truncate权限     
FIELDS TERMINATED BY ',' 数据以逗号分隔,如果是TERMINATED BY WRITESPACE表示以空白分隔,如果不指定FIELDS TERMINATED BY ',',需要为每一列都指定分隔符,如下:
(GRADE [interger external] TERMINATED BY ',',
LOSAL [interger external] TERMINATED BY ',',
HISAL [interger external] TERMINATED BY ',')
例如:
LOAD DATA
INFILE 'd:\111.txt'
TRUNCATE
INTO TABLE SALGRADE_TEST
(GRADE TERMINATED BY ',',
LOSAL TERMINATED BY ',',
HISAL TERMINATED BY ',')
  (GRADE,LOSAL,HISAL) 要加载到表中的这些字段,字段顺序需要和数据文件111.txt内的数据对应,如果单独为每一列都指定了分隔符,此部分就不需要了。
7.如果数据量不大,可以讲sqlload的数据文件(111.txt)集成到sqlload的控制文件(111.ctl)内,例如:
LOAD DATA
INFILE *
TRUNCATE
INTO TABLE SALGRADE_TEST
FIELDS TERMINATED BY ','
(GRADE,LOSAL,HISAL)
BEGINDATA
1,700,1200
2,1201,1400
3,1401,2000
4,2001,3000
5,3001,9999
加载
D:\>sqlldr scott/tiger control=d:\111.ctl
SQL*Loader: Release 11.2.0.1.0 - Production on 星期三 9月 14 17:03:53 2011
Copyright (c) 1982, 2009, Oracle and/or its affiliates.  All rights reserved.
达到提交点 - 逻辑记录计数 4
达到提交点 - 逻辑记录计数 5
登录数据库验证加载结果
D:\>sqlplus scott/tiger
连接到:
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options SQL> SELECT * FROM SALGRADE_TEST;
GRADE      LOSAL      HISAL
---------- ---------- ----------
         1        700       1200
         2       1201       1400
         3       1401       2000
         4       2001       3000
         5       3001       9999
二、加载csv格式的数据
1.建立测试表
D:\>sqlplus scott/tiger
连接到:
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 – Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
SQL> create table dept_test as select * from dept where 1=2;
表已创建。
2.建立sqlload的数据文件111.csv,内容如下
10 ACCOUNTING NEW YORK
20 RESEARCH DALLAS
30 SALES CHICAGO
40 OPERATIONS BOSTON
3.建立sqlload的控制文件111.ctl,内容如下
LOAD DATA
INFILE 'd:\111.csv'
TRUNCATE
INTO TABLE DEPT_TEST
FIELDS TERMINATED BY ','
(DEPTNO,DNAME,LOC)
4.执行加载操作
D:\>sqlldr scott/tiger control=d:\111.ctl log=d:\111.log
SQL*Loader: Release 11.2.0.1.0 - Production on 星期四 9月 15 09:47:44 2011
Copyright (c) 1982, 2009, Oracle and/or its affiliates.  All rights reserved.
达到提交点 - 逻辑记录计数 4
5.登录数据库查询
D:\>sqlplus scott/tiger
连接到:
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 – Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
SQL> select * from dept_test;
DEPTNO      DNAME          LOC
---------- -------------- -------------
        10 ACCOUNTING     NEW YORK
        20 RESEARCH       DALLAS
        30 SALES          CHICAGO
        40 OPERATIONS     BOSTON
三、加载图片到数据库
1.创建测试表,由于图片在数据库中以blob的形式保存,这里是有了11g的新特性,securefiles LOB的形式存储图片。
SQL> create table t_load_sf (id number, full_name varchar2(100),
  2  create_date date, contents blob, constraint pk_t_load_sf primary key(id))
  3  lob (contents) store as securefile;
表已创建。
2.创建sqlload的数据文件111.txt,内容如下:
1,DSC00086.JPG
2,DSC00122.JPG
3,DSC00145.JPG
4,DSC00146.JPG
5,psu.jpg
3.创建sqlload的控制文件111.ctl,内容如下:
LOAD DATA
INFILE '111.txt'
INTO TABLE T_LOAD_SF
TRUNCATE
FIELDS TERMINATED BY ','
(ID CHAR(255),
FULL_NAME CHAR(255),
CREATE_DATE SYSDATE,
CONTENTS LOBFILE(FULL_NAME) TERMINATED BY EOF)
4.加载
D:\test>sqlldr scott/tiger control=D:\111.ctl log=d:\111.log
SQL*Loader: Release 11.2.0.1.0 - Production on 星期四 9月 15 11:29:13 2011
Copyright (c) 1982, 2009, Oracle and/or its affiliates.  All rights reserved.
达到提交点 - 逻辑记录计数 5
5.登录数据库验证
SQL> select * from t_load_sf where rownum=1;
ID FULL_NAME       CREATE_DATE    CONTENTS
-------- --------------- -------------- -----------------------------------
1 DSC00086.JPG    15-9月 -11     FFD8FFE1538045786966000049492A00080
                                 000000B000E01020020000000920000000F
                                 01020005000000B20000001001020008000
                                 000B8000000120103000100000001000000
                                 1A01050001000000C000
如果使用plsqldev工具,可以看到加载进数据库的图片
 

0
0
分享到:
评论

相关推荐

    SQL*Loader详细介绍

    - **直接路径加载**:SQL*Loader可采用直接路径加载模式,绕过数据库实例,提高加载速度,但不支持事务。 - **并发加载**:通过多进程或多线程实现并发加载,提高数据导入效率。 - **子记录和数组记录**:处理...

    SQL*Loader.zip

    8. **直接路径加载**:SQL*Loader使用直接路径加载技术,绕过数据库的SQL解析器和优化器,提高数据加载速度。但这也意味着在加载期间,目标表可能无法进行其他操作。 9. **绑定变量**:高级用户还可以使用绑定变量...

    sql*loader 指南

    例如,下面的命令演示了如何使用SQL*Loader加载一个名为`loader.ctl`的控制文件: ``` sqlldr scott/tiger control=loader.ctl ``` #### 三、控制文件详解 控制文件是SQL*Loader的核心配置文件,定义了数据加载的...

    SQL*Loader

    SQL*Loader是Oracle数据库系统中的一个实用工具,用于快速加载大量数据到数据库表中。它提供了高效的数据导入功能,能够处理各种格式的数据文件,如文本文件、CSV文件等。SQL*Loader通过直接路径加载方法,可以显著...

    SQL LOADER错误小结

    在使用SQL*Loader进行数据加载时,我们可能会遇到多种错误情况。SQL*Loader是一个Oracle数据库提供的工具,用于高效地从平面文件批量导入数据。以下是一些常见错误的总结及其解决方案: 1. **编码错误导致的乱码...

    基于SQL*Loader的海量数据装载方案优化.pdf

    5. **直接路径加载**:启用SQL*Loader的直接路径加载模式,数据将直接写入数据文件,跳过缓存,显著提高速度。但需注意,这种方式可能会影响其他数据库操作,因此在高并发环境下需谨慎使用。 6. **预排序和预分区**...

    sqlloader详解

    1. **多源数据加载**:可以从多个不同类型的文件中加载数据,如文本文件、Excel表格等。 2. **记录格式支持**:支持固定长度记录和可变长度记录。 3. **多表加载**:一次运行中可以加载多个表,并且可以根据条件将...

    sqlloader

    ### SQL*Loader:高效数据加载工具 #### 引言 SQL*Loader是Oracle提供的一款强大且灵活的工具,专门用于将大量数据从平面文件(如逗号分隔值CSV文件)高效地导入到Oracle数据库中。它不仅适用于处理标准的文本格式...

    使用SQL*Loader将dBASE数据转储到ORACLE数据库.pdf

    SQL*Loader是Oracle数据库提供的一种高效的数据加载工具,用于将外部数据文件中的数据批量导入到Oracle数据库的表中。在本篇文章中,我们将探讨如何使用SQL*Loader将dBASE数据库的数据转储到Oracle数据库。 首先,...

    Oracle数据库装载外部数据工具SQL*Loader的应用 (1).pdf

    SQL*Loader的功能强大,允许一次性加载多个表,并能逻辑地将特定记录加载到不同的表中。此外,它还支持在数据加载前应用SQL函数进行预处理,以及处理嵌套列、嵌套表、VARARRAYS和LOBs(包括BLOB、CLOB、NCLOB和BFILE...

    SQL * Loader的使用技巧.pdf

    SQL*Loader是Oracle数据库系统提供的一种高效的数据导入工具,它能够快速地将文本文件中的数据加载到Oracle数据库中。在使用SQL*Loader之前,需要准备两份关键文件:数据文件和控制文件。 数据文件通常包含待导入的...

    sqlloader的成功案例

    SQL*Loader的成功案例不仅展示了其高效的数据加载能力,还体现了它在处理大量数据时的灵活性与可靠性。本文将根据提供的文件信息,深入探讨SQL*Loader的应用场景、配置过程以及实施步骤,旨在为读者提供一个全面理解...

    Oracle数据库装载外部数据工具SQL*Loader的应用.pdf

    在进行数据库的数据装载时,Oracle提供了SQL*Loader工具,这是一个强大的数据导入程序,能够将外部数据文件导入Oracle数据库表中。以下是对Oracle数据库装载外部数据工具SQL*Loader应用的详细知识点介绍。 首先,...

    如何使用ORACLE中的SQL*LOADER.pdf

    Oracle的SQL*Loader是Oracle数据库提供的一种强大的数据加载工具,它可以高效地将数据从外部文件导入到Oracle数据库中,支持多种格式的数据文件,包括文本文件、CSV文件等。在这个例子中,我们将探讨如何使用SQL*...

    SQL_LOADER教程

    SQL*LOADER是Oracle提供的一款高效的数据加载工具,主要用于将操作系统中的文件批量导入到Oracle数据库中。它支持多种数据格式,包括纯文本文件、Excel文件等,并且能够处理大规模的数据集。SQL*LOADER有两种主要的...

    SQL_LOADER例子

    在描述中提到,"sqlloader方便数据的导入导出",确实如此,SQL*Loader不仅支持数据的导入,还可以用于导出数据。对于导入,它能处理大量数据,并且支持多种数据类型,包括字符串、数字、日期等。对于导出,可以通过...

    sqlloader数据导入详解

    SQL*Loader 的核心功能在于能够读取外部文件并将其加载到指定的数据库表中。下面通过一个示例来了解 SQL*Loader 的基本语法和操作流程: ```sql LOAD DATA INFILE '/ora9i/fengjie/agent/data/ipaagentdetail200410...

    ORACLE SQL Loader

    6. **并发加载** 对于大规模数据导入,可以使用多个装载进程并行加载数据,以提高性能。但这需要考虑数据库的并发控制和资源管理。 7. **错误处理** SQL*Loader支持错误处理,可以配置它将错误记录到日志文件,...

    SQL loader and oracle sql study

    **SQLLoader FAQ - Oracle FAQ_files、SQLLoader FAQ - Oracle FAQ.htm** 这些文件很可能是关于SQL*Loader的常见问题解答(FAQ),可能包含了使用SQL*Loader时遇到的问题及其解决方案。FAQ通常涵盖以下内容: 1. **...

    [Oracle] 常用工具集之SQL*Loader的用法

    SQL*Loader是Oracle数据库系统中的一个强大工具,用于快速、高效地将大量数据批量加载到数据库中。尤其在处理业务分析或数据仓库场景时,它的优势显著,能够处理各种格式的平面文件,使得数据导入效率远超传统的逐条...

Global site tag (gtag.js) - Google Analytics