Oracle sqlldr导入导出txt数据文件详解
一、sqlldr导入txt
1.预备
a).txt文件
这里要保存成无签名的UTF-8
b).oracle建表
2.编写控制文件input_test.ctl
LOAD DATA
CHARACTERSET 'UTF8' --字符集设定
INFILE 'd:\input_test.txt' --要导入的文本数据路径,可写多个
REPLACE into TABLE input_test --清空原有数据再导入方式 追加导入 用append into table t_name
fields terminated by X'09' --以制表符分隔
trailing nullcols --允许空列导入
(col1,col2)
当col1为日期类型时,在控制文件中的字段里把col1改成
col1 "to_date(:col1,'''yyyy-mm-dd hh24:mi:ss''')"即可解决。
注:
infile 'd:\input_test.txt'表示需要装载的数据文件的路径
append into table test 数据载入的表:
(1)append 表示表中有数据,加在后面
(2)INSERT 表示装入空表,有数据则停止。默认值
(3)REPLACE 原先表中如果有数据,会被删除
(4)TRUNCATE 如果要载入的数据与现在的数据相同,载入的数据替换现存的数据。
fields terminated by ',‘
表示数据用是','分隔的,用by X'09',即16进制的"09"代表TAB制表符,常用于excel转换的tab制表符文件的数据的导入。常用分隔符还有'|'
多语种可设置字符集编码为:CHARACTERSET 'UTF8'
3.DOS下执行
sqlldr system/psw@db, control=c:\input\input_test.ctl log=c:\input\input_test.log bad=c:\input\input_test.bad
有效的关键字:
userid -- ORACLE username/password
@db -- 链接适配器名称(Net Manager配置的链接名称)
control – 控制文件
log – 记录的日志文件
bad – 坏数据文件
data – 数据文件
discard – 丢弃的数据文件
discardmax – 允许丢弃数据的最大值 (全部默认)
skip -- Number of logical records to skip (默认0)
load -- Number of logical records to load (全部默认)
errors – 允许的错误记录数 (默认50)
rows -- Number of rows in conventional path bind array or between direct path data saves(每次提交的记录数,默认: 常规路径 64, 所有直接路径)
bindsize -- Size of conventional path bind array in bytes(默认256000)
每次提交记录的缓冲区的大小(字节为单位,默认256000)
silent --禁止输出信息 (header,feedback,errors,discards,partitions)
direct – 使用直通路径方式导入 (默认FALSE)
parfile -- parameter file: name of file that contains parameter specifications
parallel -- 并行导入 (默认FALSE)
file -- File to allocate extents from
skip_unusable_indexes -- disallow/allow unusable indexes or index partitions(默认FALSE)
skip_index_maintenance -- do not maintain indexes, mark affected indexes as unusable(默认FALSE)
readsize -- Size of Read buffer (默认1048576)
与bindsize成对使用,其中较小者会自动调整到较大者。sqlldr先计算单条记录长度,乘以rows,如小于bindsize,不会试图扩张rows以填充bindsize;如超出,则以bindsize为准。
external_table -- use external table for load; NOT_USED, GENERATE_ONLY, EXECUTE(默认NOT_USED)
columnarrayrows -- Number of rows for direct path column array(默认5000)
streamsize -- Size of direct path stream buffer in bytes(默认256000)
multithreading -- use multithreading in direct path
resumable -- enable or disable resumable for current session(默认FALSE)
resumable_name -- text string to help identify resumable statement
resumable_timeout -- wait time (in seconds) for RESUMABLE(默认7200)
date_cache -- size (in entries) of date conversion cache(默认1000)
4.写成.bat批处理
上述3步已完成了txt导入,在windows下还可将sqlldr命令写成批处理文件,双击执行.
@echo off
echo input_test
pause --暂停,建议加入,以免错误双击执行
@rem
sqlldr system/psw@db, control=c:\input\input_test.ctl log=c:\input\input_test.log bad=c:\input\input_test.bad
@rem
@rem sqlldr system/psw@db, control=c:\input\input_test.ctl rows=100000
pause
二、sqlldr导出txt
利用spool 导出txt
1.写output.sql
sqlplus system/psw@db as sysdba --连接oracle
CHARACTERSET al32UTF8 --设置编码集
set trimspool on --打开池
spool c:\output\output.txt --池输出路径
set pagesize 0 --页设置
set heading off --关闭表头
set linesize 32767 --最大行显
select '#'||col1||'#,#'||col2||'#,#'||col3||'#‘ --设置需要的列格式。此例,列间以以逗号分隔,列内容用#引起。
from test_data;
exit; --退出sqlplus
spool off --关闭池
pause
注:上述命令在dos下直接敲命令执行亦可。
2.写成.bat批处理
再写bat调用上面的outputsql文件,如下:
cd/
set NLS_LANG=.AL32UTF8 --设置字符集utf8
chcp 65001 --转换编码页utf8
@echo off
echo data output
pause
@rem
sqlplus system/psw@db as sysdba @c:\dmp_sql\output.sql
@rem
pause
ctl文件的例子:
OPTIONS(skip_index_maintenance=TRUE,direct=true,BINDSIZE=20971520,READSIZE=20971520,ERRORS=-1,ROWS=500000)
--unrecoverable
LOAD DATA
--CHARACTERSET AL32UTF8
INFILE 'c:\input\Barcode.txt' ---------数据文件,即txt文件
Append INTO TABLE Demoaa.TMS_BRANCHCODE -----表名
FIELDS TERMINATED BY X'09' ------数据用制表符分割
trailing nullcols
(ID ------表中字段
,Branch_plant
,SO_Number
,Trip_Number
,Shippment_Date "to_date(:Shippment_Date,'''yyyy-mm-dd hh24:mi:ss''')"
,Sold_to
,Sold_to_Name
,Ship_to
,Ship_to_Name
,BarCode_Info
,Barcode_Seg_1
,Barcode_Seg_2
,Barcode_Seg_3
,Barcode_Seg_4
,Barcode_Seg_5
,Last_updated_time "to_date(:Last_updated_time,'''yyyy-mm-dd hh24:mi:ss''')"
)
Oracle sqlldr导入导出txt数据文件详解的更多相关文章
- Oracle管理表空间和数据文件详解
介绍 表空间是数据库的逻辑组成部分 从物理上将:数据库数据存放在数据文件中 从逻辑上将:数据库则是存放在表空间中 表空间由一个或是多个数据文件组成 数据库的逻辑结构 介绍: Oracle中逻辑结构包括 ...
- phpmyadmin导入导出大数据文件的办法
在phpmyadmin的使用中,经常需要进行导入导出数据库的操作. 但是在导入导出大型数据库文件的时候经常会只是部分导出或者部分导入. 或者是导入导出不成功. 原因就是服务器和php.mysql限制了 ...
- Oracle数据库导入导出命令总结 (详询请加qq:2085920154)
分类: Linux Oracle数据导入导出imp/exp就相当于oracle数据还原与备份.exp命令可以把数据从远程数据库服务器导出到本地的dmp文件,imp命令可以把dmp文件从本地导入到远处的 ...
- Oracle数据库导入导出总结(dmp文件)
Oracle 10G 管理页面(Oracle Enterprise Manager 10g): http://localhost:1158/em http://localhost:1158/em/co ...
- 如何在oracle中导入导出dmp数据库文件
Oracle数据导入导出imp/exp就相当于oracle数据还原与备份.exp命令可以把数据从远程数据库服务器导出到本地的dmp文件,imp命令可以把dmp文件从本地导入到远处的数据库服务器中.利用 ...
- mysql的导入导出工具mysqldump命令详解
导出要用到MySQL的mysqldump工具,基本用法是: shell> mysqldump [OPTIONS] database [tables] 如果你不给定任何表,整个数据库将被导出. 通 ...
- Oracle如何导入导出数据(转自)
导出:exp ssht/taxware@sshtfile=d:\ssht.dmpexp 用户名/密码@服务名导入:imp ssht/taxware@mysshtfile=d:\ssht.dmp fro ...
- oracle创建表空间、创建用户、授权角色和导入导出用户数据
使用数据库管理员身份登录 -- log as sysdba sqlplus / as sysdba; 创建临时表空间 -- create temporary tablespace create tem ...
- oracle中导入导出数据备份数据库
原文:oracle中导入导出数据备份数据库 数据库所在位置 将数据导出到的文件名 用户名 备份数据库 :exp c ...
随机推荐
- 为Ubuntu Server安装gnome图形桌面环境
Ubuntu Server版默认都没有图形桌面(GUI),但是可以安装,以下共有两种安装方法. 一.安装全部Gnome桌面环境 Ubuntu系列桌面实际上有几种桌面应用程序,包括Ubuntu-desk ...
- Yii源码阅读笔记(七)
接上次的组件(component)代码: /** * Returns a list of behaviors that this component should behave as. * 定义该对象 ...
- HTML: a的僞類
a:link a:visited a:hover a:active css中能夠分別針對a鏈接的4中狀態進行css樣式設置,這四種狀態就是a的僞類,分別是: 普通,訪問後,鼠標放在a鏈接上,鼠標按下未 ...
- buffer overflow
Computer Systems A Programmer's Perspective Second Edition We have seen that C does not perform any ...
- Python For Data Analysis -- Pandas
首先pandas的作者就是这本书的作者 对于Numpy,我们处理的对象是矩阵 pandas是基于numpy进行封装的,pandas的处理对象是二维表(tabular, spreadsheet-like ...
- 关于Memo或者Edit之类控件, 直接设置Text无法撤销的解决方案
昨天看到群里有人问使用Memo1.Text := '11111';来设置内容的代码无法使用Memo1.Undo的方式来撤销 测试了一下果然如此, 跟踪了VCL代码, 发现Text := '11111' ...
- 【Android测试】【第六节】Monkey——认识和使用
◆版权声明:本文出自carter_dream的博客,转载必须注明出处. 转载请注明出处:http://www.cnblogs.com/by-dream/p/4688880.html 自动化工具 接触安 ...
- php--如何解决网站分页导致的SEO问题
如何解决网站分页导致的SEO问题 分页(pagination)是一种自动分页机制,可以将移动Web窗体中的内容分割成一组组较小的页进行呈现,以适合于特定的设备,该机制还呈现可用于浏览到其他页的用户界面 ...
- Arcgis for JS之Cluster聚类分析的实现(基于区域范围的)
原文:Arcgis for JS之Cluster聚类分析的实现(基于区域范围的) 咱们书接上文,在上文,实现了基于距离的空间聚类的算法实现,在本文,将继续介绍空间聚类之基于区域范围的实现方式,好了,闲 ...
- (leetcode)Summary Ranges
Given a sorted integer array without duplicates, return the summary of its ranges. For example, give ...