使用其它数据库的数据转移工具
Oracle 企业管理器中的数据加载功能
具体的技术实现
一、Dos 环境下加载
1、首先,服务器端的侦听服务必须已经开启。
测试方法:Dos 下输入
2、然后使用 Oracle 的 sqlldr 命令进行数据的导入
前期条件
1) Oracle 数据库端必须已经建好了需要导入的数据表的结构
2) 一个数据源文件 下面例子中为制表符分隔的文本文件 model.txt ,为Excel 表中导出的
3) 手工编辑一个XXX.CTL 的盯歼嫌控制文件
4) 命令行加载数据
如下实例:
以下文件缺省放到C:\ 下,如果不是,就需要指明全路径
1. 命令控制文件 input.ctl 内容
命令
说明
load data
1、控制文件标识
infile 'model.txt'
2、要输入的数据文件名为test.txt
append into table system.塔位属性表
3、向表test中追加记录
fields terminated by X'09'
4、指定分隔符,字段终止于X'09',是一个制表符(TAB)
(编号,名称,大小)
5、定义列对应表中顺序
控制文件中指定插入数据的方式关键字
insert,为缺省方式,在数据装载开始时要求表为空
append,在表中追加新记录
replace,删除旧记录,替换成新装载的记录
truncate,同上
在 Dos 窗口下使用 SQl*Loader 命令实现数据的导入
C:\>sqlldr userid=system/manager@ serviceName control=input.ctl
默认日志文件名为:input.log
默认坏记录文件为:input.bad
二、使用其它数据库转移工具
以下以SQL Server 导入导出向导为例
1、在数据的导入导出向导中设置数据源服务器,实例中选择数据源选择SQL Server
2、然后指定要导入的Oracle 数据源
3、需要配置Oracle 的属性信息
需要注意的是,登录数据库的用户信息即为数据导入之后的方案名,即导入之后的SQL Server 中的表在Oracle 中标志名为 username.表名
以下按照提示即可,可以完全导入SQl Server 中的数据表和视图,也可以使用查询语句返回你要选择的列或者行。
三、Oracle 企业管理器中的数据加载功能
登录Oracle 的控制台界面,针对单独的数据表可以使用数据加载工具
中间需要指定控制文件凯手等,同Dos 加载一致,不再重复
----------------------------------------------------
向Oracle中导入文本数据时使用的控制文件格式
无论是使用上一篇中的哪种方式都需要有一个控制文件,下面是控制文件(ctl文件)书写的基本格式:
命令
说明
load data
1、控制文件标识
infile 'testl.txt'
2、要输入的数据文件名为test.txt,此时是要导入的数据文件同控制文件在同一路径下,如果不在同一路径下则需要写完整路径名
append into table 表名(可以是全名也可以是同义词)
3、向表test中追加记录
fields terminated by X'09'
4、指定分隔符,字段终止于X'09',是一个制表符(TAB),如果用逗号分割就将X'09'替换为','
(编号,名称,大小)
5、定义列对应表中顺序
控制文件中指定插入数据的方式关键字
insert,为缺省方式,在数据装载开始时要求表为空
append,在表中追加改戚新记录
replace,删除旧记录,替换成新装载的记录
truncate,同上
控制文件的示例:
load data
infile 'test.txt'
append into table test.test
fields terminated by X'09'
(test,test1,test2)
对有时间类型的数据导入的示例控制文件:
load data
infile 'h:\TB_FACT_PHS_TICKET_DAY.txt'
Append into TABLE TB_FACT_PHS_TICKET_DAY
fields terminated by X'09'
(Time_Id
,Region_Id
,Cust_Type_Id
,Prod_Type_Id
,Acct_Item_Type_Id
,Acct_Item_Type_Cd
,Exchange97_Cd
,Latn_Cd
,Call_Duration
,Access_In_Duration
,Income
,In_Date Date "YYYY-MM-DD"
)
文件导入命令C:\>sqlldr userid=test/test@test control=test.ctl(此时控制文件test.ctl存在C:\路径下)
在命令控制符下进入OracleC:\>sqlplus username/password@serviceName
oracle导入txt数据文件2008年07月30日 星期三 17:21把txt文件格式的数据文件导入oracle的方法是利用sqlloader工具。
第一步:把文本格式的数据文件放入C盘。如,test.txt
第二步:建立控制文件append.ctl。(名字可以随便取,放C盘下)
append.ctl的内容如下:
load data --1、控制文件标识
infile 'test.txt' --2、要输入的数据文件名为test.txt
append into table CTXSYS.test --3、向CTXSYS表空间中的表test中追加记录
fields terminated by X'09' --4、字段终止于X'09',是一个制表符
(id,username,password,sj) -----定义列对应顺序
其中append为数据装载方式,还有其他选项:
a、insert,为缺省方式,在数据装载开始时要求表为空
b、append,在表中追加新记录
c、replace,删除旧记录,替换成新装载的记录
d、truncate,同上
第三步:在命令提示符下输入命令。
C:\>sqlldr userid=username/password
control=c:\append.ctl数据库中用名的用户名和密码
或者 C:\>sqlldr userid=system/manager@ serviceName control=input.ctl
----------------------------------------------------
一些经常出现的问题:
1。关于日期格式的问题:
ctl基本写法诸如:
load data
infile 'C:/TP_LOANCONTRACTSUM.txt'
insert into table TP_LOANCONTRACTSUM
fields terminated by '|!'
(
column01,
column02,
column03,
column04 "to_date(:column04,'''yyyy-mm-dd hh24:mi:ss''')",
column05 "to_date(:column05,'''yyyy-mm-dd hh24:mi:ss''')",
column06,
column07,
column08,
column09,
column10,
column11,
column12 "to_date(:column12,'''yyyy-mm-dd hh24:mi:ss''')",
column13
)
2。关于长字符串问题,CTL默认情况下是256位(或者256位左右),所以长字符串时会在log里报错,提示所输入的值超过最大长度,解决办法,在ctl文件里再指定大小,注意个情况,不能写VARCHAR只能写CHAR,否则报错,诸如:
load data
infile 'C:/TP_PLEDGECONTRACTINFO.txt'
insert into table TP_PLEDGECONTRACTINFO
fields terminated by '|!'
(
column01,
column02,
column03,
column04,
column05,
column06,
column07 "to_date(:column07,'''yyyy-mm-dd hh24:mi:ss''')",
column08,
column09,
column10 "to_date(:column10,'''yyyy-mm-dd hh24:mi:ss''')",
column11,
column12,
column13,
column14,
column15 "to_date(:column15,'''yyyy-mm-dd hh24:mi:ss''')",
column16,
column17,
column18 "to_date(:column18,'''yyyy-mm-dd hh24:mi:ss''')",
column19,
column20,
column21,
column22,
column23,
column24,
column25 "to_date(:column25,'''yyyy-mm-dd hh24:mi:ss''')",
column26 CHAR(500),
column27,
column28
)
ctl 的写法
危险品货运
精选推荐
广告
SQL*Loader 向oracle数据库批量添加数据 .ctl文件 使用方式详见文章
17下载·0评论
2017年9月11日
【20150622 】sqlldr及ctl文件
2234阅读·0评论·0点赞
2015年6月22日
Oracle sqlldr命令和ctl控制文件
8731阅读·6评论·3点赞
2019年10月21日
txt导入mysql ctl_用Oracle sqlldr导入文本文件TXT
354阅读·0评论·0点赞
2021年2月3日
linux中ctl文件注释,linux apachectl命令参数及用法详解--Apache HTTP服务器控制接口
385阅读·0评论·0点赞
2021年5月12日
sqlldr语法
5973阅读·1评论·0点赞
2007年6月7日
天喻信息
精选推荐
广告
关于SQLLDR-CTL文件的编写和注意事项
1768阅读·2评论·0点赞
2020年10月12日
SQLLDR—CTL文件
7155阅读·0评论·6点赞
2017年12月12日
shell中sqlldr、ctl的基本使用与示例
4260阅读·3评论·3点赞
2020年9月15日
sqlder ctl控制文件 参数及模板
1387阅读·0评论·1点赞
2020年4月24日
insert /* APPEND */ into table_name用法
582阅读·0评论·0点赞
2011年1月3日
ORACLE数据加载加本,Oracle sqlldr导入数据使用默认值和提高性能的方法
142阅读·0评论·0点赞
2021年5月2日
oracle insert语句_Oracle的sqlldr命令的简单使用
412阅读·0评论·0点赞
2020年11月26日
pg_ctl -- 启动、停止、重启 PostgreSQL
6.7W阅读·1评论·4点赞
2012年8月3日
ctl 的写法_GrADSctl文件编写
说明:当CSV文件数据量很大时,我们可以使用cmd命令方法导入,此方法速度十分快,具体方法如下:工具:Oracle ,sqlldr命令
1、建立一个文件夹,将csv文件,放入此文件夹。
如本文示例中文件夹路径:D:\配唯码LZL
2、在所要导进的oracle数据库建立表,此处我们建立表名为TEMP_TNB 空表。
注意事项:oracle表字段要和CSV文件对应
3、在第1步中,文件夹下,建立一个ctl文件。
使用文本编辑器(记事本)即可,然后将后缀txt改为ctl,在本示例中,我建立一个名为input.ctl的文件,内容参考,如下:
在这里插入图片描述
代码内容:
options (skip=1,rows=1000)
LOAD DATA
CHARACTERSET AL32UTF8
INFILE ‘D:\LZL\tnb.csv’
truncate
INTO TABLE “TEMP_TNB”
fields terminated by ‘,’
optionally enclosed by ‘"’
trailing nullcols
(C1,
C2,
C3,
C4,
C5,
C6
)
ctl文件中代码内容解释如下:
options (skip=1,rows=1000) – sqlldr 命令显示的选项可以写到这里边来,skip=1 用来跳过数据中的第一行 – rows 默认是64,你可以根据实际指定更合适的 ROWS 参数来指定每次提交记录数。
LOAD DATA --固定格式 ,加载数据
CHARACTERSET AL32UTF8 --指定外部文件的字符集,如果数据库是GBK字符集,导入的数据文件是UTF-8,则此处为AL32UTF8 ,如果字符集,导入的文件与数据一致,此处可以省略,如果导入数据库后内容有乱码,可以逐重查看此处命令行。
INFILE ‘D:\LZL\TNB.csv’ --指定外部数据文件,可以写多个,INFILE"another_data_file.csv" 来指定多个数据文件
BADFILE ‘E:\test\T_ORDER_DETAIL.bad’ – BADFILE 来指定坏数据,可以不写
DISCARDFILE ‘E:\test\T_ORDER_DETAIL.dis’ --DISCARDFILE 指定丢弃数据的文件,可以不写
APPEND -- *** 作类型,可以有insert,append,replace,truncate
INTO TABLE “TEMP_TNB” --目标表 TEMP_TNB 表名要大写
Fields terminated by “,” --导入的数据中每行记录用 “,” 分隔,并不是数据库中的数据,csv文件固定格式
Optionally enclosed by ‘"’ – 导入的数据中每个字段用 ‘"’ 框起,培哪比如字段中有 “,” 分隔符时,csv文件固定格式
trailing nullcols --表的字段没有对应的值时允许为空
(
C1,
C2,
C3,
C4,
C5,
C6
)
说明:在 *** 作类型 truncate 位置可用以下中的一值:
insert --为缺省方式,在数据装载开始时要求表为空
append --在表中追加新记录
replace --删除旧记录(用 delete from table 语句),替换成新装载的记录
truncate --删除旧记录(用 truncate table 语句),替换成新山纳装载的记录
xx.csv文件在表格里面存储形式为 “ xxx”,“xxxx”,“xxxx”
因此这两个参数添加上
Fields terminated by “,”
Optionally enclosed by ‘"’
尤其是在数据库里面为number类型的,否则导入的要么是字符型的,要么导入不成功。
————————————————
4、控制台cmd命令行,转到CSV目录下
在这里插入图片描述
5、打开命令窗口后,输入如下命令代码并按enter键即可:
sqlldr userid=ehr_hns/ehr_hns@127.0.0.1:1521/gw control= ‘D:\LZL\input.ctl’ log=‘D:\LZL\INPUT_log.log’
代码解释:ehr_hns 为username;ehr_hns@127.0.0.1/gw 为PL/SQL账户(在最上面)
control= 后面加上ctl控制文件路径
log= 后面加上日志文件路径
最后运行成功如下:
在这里插入图片描述
日志文件,成功,如下图示:
在这里插入图片描述
文章知识点与官方知识档案匹配
MySQL入门技能树使用数据库 创建和删除数据库
28655 人正在系统学习中
1,新建文件test.ctl 将下面的内容复制到文件中----------------------
Load data
Infile 'F:\BI\017 端到端报表\SQLLDR数据导入\局纤test.csv' --数据源文件名称
Append--append在表后追加,insert插入空表,replace替代原有内容
Into table ctl.test --要导入的数据库表名称
--[when id = id_memo]--过滤条空梁件
Fields terminated by ',' --字段分桐亏仿隔符
(a1,a2,a3,a4,a5) --字段名称列表
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)