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)

注:

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/[email protected], control=c:\input\input_test.ctl log=c:\input\input_test.log bad=c:\input\input_test.bad

有效的关键字:

userid -- ORACLE username/password

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/[email protected], control=c:\input\input_test.ctl log=c:\input\input_test.log bad=c:\input\input_test.bad
@rem
@rem sqlldr system/[email protected], control=c:\input\input_test.ctl rows=100000
pause

二、sqlldr导出txt

利用spool 导出txt

1.写output.sql

sqlplus system/[email protected] 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/[email protected] as sysdba @c:\dmp_sql\output.sql
@rem
pause

时间: 2024-10-11 12:11:50

Oracle sqlldr导入导出txt数据文件详解的相关文章

学习笔记:Oracle dul数据挖掘 导出Oracle11G数据文件坏块中表中

试验模拟导出Oracle 11G数据库中数据文件坏块中表中的数据 以前一直以为dul对应的版本只能恢复最高的数据库版本一致,今天测试发现dul 10可以恢复11g最新版的数据库.模拟环境 SQL> select * from v$version; BANNER -------------------------------------------------------------------------------- Oracle Database 11g Enterprise Edition

phpmyadmin导入导出大数据文件的办法

在phpmyadmin的使用中,经常需要进行导入导出数据库的操作. 但是在导入导出大型数据库文件的时候经常会只是部分导出或者部分导入. 或者是导入导出不成功. 原因就是服务器和php.mysql限制了导出导入数据库文件的大小.而改相应的配置又十分繁琐,所以这里提供一个绕过导出导入有大小限制的办法. 这个思路就是直接在服务器上面进行导出导入.过程如下 将phpMyAdmin/config.sample.inc.php 文件改名为phpMyAdmin/config.inc.php并打开编辑 * Di

oracle中导入导出dmp数据库文件

数据的导出: 1.将数据库szda完全导出,用户名sa密码sa123 导出到D:\daochu.dmp中             exp sa/[email protected] file=d:\daochu.dmp full=y 2.将数据库中sa用户与sys用户的表导出             exp sa/[email protected] file=d:\daochu.dmp owner=(sa,sys) 3.将数据库中的表table_1.table_2导出             ex

mysql的导入导出工具mysqldump命令详解

导出要用到MySQL的mysqldump工具,基本用法是: shell> mysqldump [OPTIONS] database [tables] 如果你不给定任何表,整个数据库将被导出. 通过执行mysqldump --help,你能得到你mysqldump的版本支持的选项表. 注意,如果你运行mysqldump没有--quick或--opt选项,mysqldump将在导出结果前装载整个结果集到内存中,如果你正在导出一个大的数据库,这将可能是一个问题. mysqldump支持下列选项: --

redis 导入导出redis-load,redis-dump详解

安装redis-dump[[email protected] ~] yum install ruby rubygems ruby-devel //安装rubygems 以及相关包 [[email protected] ~] gem sources -a http://gems.ruby-china.org/ //源,ruby china加入,外面的源不能访问 http://gems.ruby-china.org/ added to sources [[email protected] ~] ge

ORacle数据库导入导出数据

一.导出1.导出整个数据库通用命令:exp 数据库用户名/数据库密码@数据库别名 file=E:\目录\文件名.dmp举例:exp gwyxgldb /gwyxgldb @192.168.0.31  file=d:\gwyxgldb.dmp 2.导出部分表通用命令exp 数据库用户名/数据库密码@数据库别名 GRANTS=Y TABES=(要导出的表1, 要导出的表2,...) file=E:\目录\文件名.dmp exp gwyxgldb /gwyxgldb @192.168.0.31 gra

oracle中导入导出数据备份数据库

原文:oracle中导入导出数据备份数据库 数据库所在位置                         将数据导出到的文件名                    用户名 备份数据库 :exp csm/[email protected]/orcl file=c:/baoan_1.1.0_20120816.dmp owner=(csm) 数据库所在位置                         需要导入数据的文件名 恢复数据库 :imp csm/[email protected]/orc

oracle数据库导入导出命令

大多情况都可以用Oracle数据导入导出完成数据的备份和还原(不会造成数据的丢失). Oracle有个好处,虽然你的电脑不是服务器,但是你装了oracle客户端,并建立了连接 (通过Net Configuration Assistant添加正确的服务命名,其实你可以想成是客户端与服务器端 修了条路,然后数据就可以被拉过来了) 这样你可以把数据导出到本地,虽然可能服务器离你很远. 你同样可以把dmp文件从本地导入到远处的数据库服务器中. 利用这个功能你可以构建俩个相同的数据库,一个用来测试,一个用

oracle数据库导入导出方法

Oracle Database 10g以后引入了最新的数据泵(Data Dump)技术,使DBA或开发人员可以将数据库元数据(对象定义)和数据快速移动到另一个oracle数据库中. 数据泵导出导入(EXPDP和IMPDP)的作用  1.实现逻辑备份和逻辑恢复.  2.在数据库用户之间移动对象.  3.在数据库之间移动对象  4.实现表空间搬移. 数据泵导出导入与传统导出导入的区别: 在10g之前,传统的导出和导入分别使用EXP工具和IMP工具,从10g开始,不仅保留了原有的EXP和IMP工具,还