oracle使用sql文件创建表,使用SQL*Loader创建外部表之一

使用SQL*Loader创建外部表:

---创建目录对象并授权给Scott用户:

SQL> create or replace directory loader_home as '/home/oracle/dirhome';

Directory created.

--授权:

SQL> grant read,write on directory loader_home to scott;

Grant succeeded.

---在scott用户下创建外部表:

SQL> conn scott/tiger

Connected.

SQL> show user

USER is "SCOTT"

--创建外部表:

SQL> create table myloader(

2  id number(3),

3  dname varchar2(12),

4  lname varchar2(10));

Table created.

--查看表结构:

SQL> desc myloader

Name                                      Null?    Type

----------------------------------------- -------- ----------------------------

ID                                                 NUMBER(3)

DNAME                                              VARCHAR2(12)

LNAME                                              VARCHAR2(10)

---在操作系统层创建两个存放外部数据的文件:

[oracle@enmo ~]$ cd dirhome/

[oracle@enmo dirhome]$ pwd

/home/oracle/dirhome

[oracle@enmo dirhome]$

--创建外部文件1:

[oracle@enmo dirhome]$ vi dt1.csv

10,ACCOUNTING,NEW YORK

20,RESEARCH,DALLAS

30,SALES,CHICAGO

40,OPERATIONS,BOSTON

~

--创建外部文件2:

[oracle@enmo dirhome]$ vi dt2.csv

40,OPERATIONS1,BOSTON0

50,OPERATIONS2,BOSTON9

60,OPERATIONS3,BOSTON8

70,OPERATIONS4444,BOSTON7

~

--查看创建的两个外部文件:

[oracle@enmo dirhome]$ ls

dt1.csv  dt2.csv

[oracle@enmo dirhome]$ ll

total 8

-rw-r--r-- 1 oracle oinstall 80 Nov  1 22:38 dt1.csv

-rw-r--r-- 1 oracle oinstall 95 Nov  1 22:39 dt2.csv

[oracle@enmo dirhome]$

--创建外部表控制文件:

[oracle@enmo dirhome]$

[oracle@enmo dirhome]$ vi load.ctl

load data

infile 'dt1.csv'

infile 'dt2.csv'

badfile 'load.bad'     #指明坏文件

into table myloader

truncate

fields terminated by ','

(id,dname,lname)

~

--查看控制文件:

[oracle@enmo dirhome]$ ls

dt1.csv  dt2.csv  load.ctl

---导入外部文件到Scott用户下的myloader表:

[oracle@enmo dirhome]$ sqlldr scott/tiger control=load.ctl

SQL*Loader: Release 11.2.0.4.0 - Production on Tue Nov 1 22:54:19 2016

Copyright (c) 1982, 2011, Oracle and/or its affiliates.  All rights reserved.

Commit point reached - logical record count 4

Commit point reached - logical record count 8

[oracle@enmo dirhome]$

--查看本目录下的文件:

[oracle@enmo dirhome]$

[oracle@enmo dirhome]$ ls

dt1.csv  dt2.csv  load.bad  load.ctl  load.log

#多生成了一个load.bad的坏文件,是存放因为不符合导入条件的数据。

--到Scott用户查看表myloader的数据:

SQL> select * from myloader;

ID DNAME        LNAME

---------- ------------ ----------

10 ACCOUNTING   NEW YORK

20 RESEARCH     DALLAS

30 SALES        CHICAGO

40 OPERATIONS   BOSTON

40 OPERATIONS1  BOSTON0

50 OPERATIONS2  BOSTON9

60 OPERATIONS3  BOSTON8

7 rows selected.

#通过Scott用户下的SQL查询,发现 外部文件dt2.csv中的ID号为70的数据没有被导入表myloader中。

--尝试读取load.bad文件的额数据:

[oracle@enmo dirhome]$

[oracle@enmo dirhome]$ cat load.bad

70,OPERATIONS4444,BOSTON7

#看到因为第二个字段的长度超出了设置的长度,所以没有被导入到表中。

---空值null的处理:

--在Scott用户另外创建一个表hisloader:

SQL> create table hisloader(

2  id number(3),

3  dname varchar2(12),

4  lname varchar2(10));

Table created.

--编辑外部文件dt3.csv以及控制文件:

[oracle@enmo dirhome]$ vi dt3.csv

101,OPERATIONS5,BOSTON1

102,OPERATIONS6,BOSTON2

103,OPERATIONS7

~

#共3条数.

--创建控制文件:

[oracle@enmo dirhome]$ vi load1.ctl

load data

infile 'dt3.csv'

badfile 'load.bad'

into table hisloader

truncate

fields terminated by ','

trailing nullcols

(id,dname,lname)

~

--利用sqlldr将外部数据导入表hisloader中:

[oracle@enmo dirhome]$ sqlldr scott/tiger control=load1.ctl

SQL*Loader: Release 11.2.0.4.0 - Production on Tue Nov 1 23:22:58 2016

Copyright (c) 1982, 2011, Oracle and/or its affiliates.  All rights reserved.

Commit point reached - logical record count 3

[oracle@enmo dirhome]$

#可到有3条数据导入表中。

--到Scott用户查看hisloader表的数据:

SQL> select * from hisloader;

ID DNAME        LNAME

---------- ------------ ----------

101 OPERATIONS5  BOSTON1

102 OPERATIONS6  BOSTON2

103 OPERATIONS7

#可以看到含有空值的数据也可以被导入到表hisloader中。

--查看目录下的外部文件:

[oracle@enmo dirhome]$ ll

total 32

-rw-r--r-- 1 oracle oinstall   80 Nov  1 22:38 dt1.csv

-rw-r--r-- 1 oracle oinstall   95 Nov  1 22:39 dt2.csv

-rw-r--r-- 1 oracle oinstall   64 Nov  1 23:18 dt3.csv

-rw-r--r-- 1 oracle oinstall  136 Nov  1 23:21 load1.ctl

-rw-r--r-- 1 oracle oinstall 1588 Nov  1 23:22 load1.log

-rw-r--r-- 1 oracle oinstall   26 Nov  1 22:54 load.bad

-rw-r--r-- 1 oracle oinstall  134 Nov  1 22:50 load.ctl

-rw-r--r-- 1 oracle oinstall 1852 Nov  1 22:54 load.log

[oracle@enmo dirhome]$

对于含有控制的数据,就需要在控制文件中添加语句trailing nullcols。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/266938.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

添加错误debug信息

http://hi.baidu.com/wei_1123/item/4218b2f704976cd66225d2d8 常常程式一長,哪邊就不小心多release了一次這時候編譯器就只會告訴你:BAD_ACCESS,然後程式就死了剛開始會google到去Argument加個NSZombieEnabled YES會多吐一點東西讓你把bug除…

雅礼集训 2017 Day1

T1:loj 6029 市场 题目大意: 维护一个数据结构支持区间加 区间除法 区间求最小值 区间求和 思路: 用线段树维护区间加 区间求最小值 区间和 对于区间除法 注意到除数d很大而加法的w很小 尝试将区间除法变成区间减法 可以转化成减法的情况就是…

oracle linux6 u盘安装,Oracle Enterprise Linux/Redhat Linux 6.0 U盘安装方法

多灾多难的Fedora 15安装史:第一天方法1 使用UltraISO直接将ISO写入硬盘映像。。结果无法启动方法2 使用liveusb-creatorFedora 15 64位 Live CD 光标永远停留在左上角。无法引导。。方法3 syslinux ,然后自己写个菜单 加载 linux askmethod 结果提示需…

多行文本框

2019独角兽企业重金招聘Python工程师标准>>> #-*- coding: UTF-8 -*- import wxclass TextFrame(wx.Frame):def __init__(self):wx.Frame.__init__(self,None,-1,u多行文本框,size(250,150))panelwx.Panel(self,-1)multiTextwx.TextCtrl(panel,-1,"Python is a…

免oracle客户端下载,Oracle免安装客户端

我们要连接oracle经常需要安装庞大的oracle客户端,很占用硬盘空间,所以我们通过下面的设置就可以在不安装客户端的情况下连接到oracle。首先需要下载Oracle Client Package(免安装包)从http://www.oracle.com/technology/software/tech/oci/instantclien…

tar命令详解

tar [-cxt zjvfpPN] 文件 目录 -c :建立一个压缩文件的参数指令(create 的意思); -x :解开一个压缩文件的参数指令! -t :查看 tarfile 里面的文件! 在参数的下达中, c/x/t 仅能存在一个&a…

网站如何接入第三方登录,微信登录和QQ登录:注册认证篇

第三方登录平台接入 (QQ\微信登录) QQ登录接入 第一步成为QQ应用开发者,审核期限七天 一、所需材料 1、公司注册相关信息 2、营业执照扫描件 微信登录接入 第一步成为微信开发平台开发者,认证费用300元一年 一、所需材料 1、网站相…

Directx11教程(55) 建立球形和锥形物体

本教程中,我们新建2个model class,SphereModelClass以及CylinderModelClass,分别用来表示球形和锥形物体。 程序执行后的界面如下: 线框模式界面如下: 从线框模式可以看出,球形是由三个因素决定:半径、经度…

JAVA基础学习之路(十一)引用传递

引用传递: 不同栈内存可以指向同一块堆内存,不同栈内存可以对一块堆内存进行修改 范例一: class Message {private int num 10;public Message(int num) {this.num num;}public void setNum(int num) {this.num num;}public int getNum() …

oracle 压缩导出 导入,EXP直接导出压缩问津,IMP直接导入压缩文件的方法

在10G之前,甚至在10G的Oracle环境中,有很多数据量不大,重要性不太高的系统依然采用EXP/IMP逻辑导出备份方式,或者,作为辅助备份方式。通常情况下,我们都是这样操作的:1.exp导出2.gzip压缩3.gzip…

Confluence 6 针对你的数据库类型确定校验 SQL

不同的数据库通常要求不同的 SQL 校验查询。校验查询通常需要尽可能的简单,这个查询在链接从数据库连接池中取出的时候都会被执行一次。 针对不同的数据库类型,我们推荐先的校验查询 SQL: MySQLselect 1Microsoft SQL Serverselect 1Oraclese…

c#oracle数组超出,c# – ODP.net填充数据集时的Oracle Decimal Number精度问题.异常:算术运算导致溢出...

我在c#.net 2(Visual Studio 2005 SP1)中工作,尝试使用来自Oracle10g数据库的select * from table的结果填充数据集. .net框架,IDE和数据库不能在此客户端站点更改.我使用ODP.net提供商连接,dll版本是2.102.2.20当我运行fill命令时,我得到一个例外:算术运算导致溢出…

php常见数据类型转换与判断

2019独角兽企业重金招聘Python工程师标准>>> 强制类型转换问题: (array) false > array(0>) (array) true > array(0>1) (array) null >array( ) 进行类型转…

Maven deploy部署jar到远程私服仓库

一、配置私服账号密码 修改maven配置文件,在$MAVEN_HOME/conf/setting.xml中增加如下配置: 注意,这里配置的id为releases何snapshots,当然可以改为其他,先记得这里有过id的配置,后面有用 二、配置远程发布到…

sublime怎么编译php,让sublime编译php、js

一、PHP1、将PHP程序设置到环境变量中,以使在任意目录下都可执行php命令。关于这个,linux下和windows下分别又不同的方法,可以网上搜索到。2、创建PHP编译系统添加 PHP 的 build system,如图所示, Tools->Build Sys…

HDU-Yuna's confusion 树状数组 Or Multiset

比赛的时候竟然没有想到这题可以用树状数组过,由于数字的区间比较小,所以直接开设一个树状数组,定义sum(i) 表示小于i的数的总数。那么判定一个数是否有的条件就是计算sum(i1) sum(i) 便可以了,查找第K大的数,也就可以…

linux系统etc什么意思,etc.是什么意思 linux下的etc是什么意思

Etc是Electronic the collection的缩写,指电子不停车收费系统,是指车辆在通过收费站时通过车上安装的Etc车载系统与收费站之间微波通讯,进行车辆识别,再联合网络和银行进行自动扣费的一种新型收费模式。电子不停车收费系统(英语&a…

《几何与代数导引》例2.7.3

求$yz$面上二次曲线\begin{equation}\begin{cases}\frac{z^2}{c^2}-\frac{y^2}{a^2}1\\x0\\\end{cases}\end{equation}绕$z$轴旋转所得的二次曲面的方程.解:对于二次曲面上的任意点$p(x,y,z)$.都存在相应的二次曲面上的点$(x_0,y_0,z_0)$,使得\begin{equation}(x-x_…

【Leetcode】【Longest Palindromic Substring】【最长回文子串】【C++】

题目:给定字符串,求其最长的回文子串说明:给定字符串长度为1000以内。思路:for循环遍历字符串,求以i为中心的回文子串长度。与最长回文子串长度max_len比较,若大于max_len,则更新max_len。说明&…

万里长征,始于足下——菜鸟程序员的学习总结

最近一直的谈论如何学习,如何做笔记,学习方法是否正确?(发现问题——创新的原动力)为什么开始系统化学习了,反而暴露许许多多的问题?细想也并不是很多,这都是过去的遗留问题&#xf…