oracle数据与文本导入导出源码示例
发表于:2025-11-09 作者:千家信息网编辑
千家信息网最后更新 2025年11月09日,oracle提供了sqlldr的工具,有时需要讲数据导入到文本,oracle的spool可以轻松实现。方便的实现oracle导出数据到txt、txt导入数据到oracle。一、导出数据到txt用all
千家信息网最后更新 2025年11月09日oracle数据与文本导入导出源码示例
oracle提供了sqlldr的工具,有时需要讲数据导入到文本,oracle的spool可以轻松实现。
方便的实现oracle导出数据到txt、txt导入数据到oracle。
一、导出数据到txt
用all_objects表做测试
SQL> desc all_objects; Name Null? Type ----------------------------------------- -------- ---------------------------- OWNER NOT NULL VARCHAR2(30) OBJECT_NAME NOT NULL VARCHAR2(30) SUBOBJECT_NAME VARCHAR2(30) OBJECT_ID NOT NULL NUMBER DATA_OBJECT_ID NUMBER OBJECT_TYPE VARCHAR2(19) CREATED NOT NULL DATE LAST_DDL_TIME NOT NULL DATE TIMESTAMP VARCHAR2(19) STATUS VARCHAR2(7) TEMPORARY VARCHAR2(1) GENERATED VARCHAR2(1) SECONDARY VARCHAR2(1)
拿object_id,object_name做导出、导入测试。
一些设置满足数据导出的样式:
vi exp_table.sql
set line 1000 --设置行的长度set pagesize 0 --输出不换页set feedback off --默认的当一条sql发出的时候,oracle会给一个反馈,比如说创建表的时候,如果成功命令行会返回类似:Table created的反馈,off后不显示反馈set heading off --不显示表头信息set trimspool on --如果trimspool设置为on,将移除spool文件中的尾部空set trims on --去掉空字符set echo off; --显示start启动的脚本中的每个sql命令,缺省为onset colsep '|' --设置分隔符set termout off --不在屏幕上显示结果spool db1.txt --记录数据到db1.txtselect object_id,object_name from all_objects; --导出数据语句spool off --收集完毕exit
一切就绪后导出数据:
[oracle@centos5 ~]$ sqlplus test/test @exp_table.sql SQL*Plus: Release 10.2.0.4.0 - Production on Thu Jun 13 16:35:14 2013Copyright (c) 1982, 2007, Oracle. All Rights Reserved.Connected to:Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - 64bit ProductionWith the Partitioning, OLAP, Data Mining and Real Application Testing optionsDisconnected from Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - 64bit ProductionWith the Partitioning, OLAP, Data Mining and Real Application Testing options[oracle@centos5 ~]$ sed -i 's/ //g' db1.txt --可选,去除每行开头部分的空格[oracle@centos5 ~]$ more db1.txt 20|ICOL$44|I_USER128|CON$15|UNDO$29|C_COBJ#3|I_OBJ#25|PROXY_ROLE_DATA$
导出后检查数据的记录数是否正确
[oracle@centos5 ~]$ cat db1.txt |wc -l49988[oracle@centos5 ~]$ sqlplus test/testSQL*Plus: Release 10.2.0.4.0 - Production on Thu Jun 13 16:36:21 2013Copyright (c) 1982, 2007, Oracle. All Rights Reserved.Connected to:Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - 64bit ProductionWith the Partitioning, OLAP, Data Mining and Real Application Testing optionsSQL> select count(*) from all_objects; COUNT(*)---------- 49988 --数据正确
二、从txt导入数据到oracle
sqlldr是通过一个control文件设定后,从文本导入数据
建立一张测试表
SQL> create table tb_sqlldr (id number,name varchar2(50));Table created.
建立一个control文件
vi tb_sqlldr.ctl
load data infile 'db1.txt' --数据来源文本append into table tb_sqlldr --数据导入到表tb_sqldr中,导入方式为追加,如果想覆盖fields terminated by "|" --4、字段终止于X'09',是一个制表符(tab)(id,name) --定义对应的字段名称,注意顺序
导入数据分成四种模式,可以根据需求选择:
APPEND // 原先的表有数据 就加在后面
INSERT // 装载空表 如果原先的表有数据 sqlloader会停止 默认值
REPLACE // 原先的表有数据 原先的数据会全部删除
TRUNCATE // 指定的内容和replace的相同 会用truncate语句删除现存数据
执行导入操作
sqlldr userid=test/test control=tb_sqlldr.ctl
差不多5w的数据短短2s解决
执行导入后验证数据
SQL> select count(*) from tb_sqlldr; COUNT(*)---------- 49988
导入成功
再执行一次导入操作,由于设置为追加:
SQL> select count(*) from tb_sqlldr; COUNT(*)---------- 99976
记录翻倍
sqlldr还有很多参数供选择,比如log、bad这些,查看帮助即可。
[oracle@centos5 ~]$ sqlldrSQL*Loader: Release 10.2.0.4.0 - Production on Thu Jun 13 17:07:26 2013Copyright (c) 1982, 2007, Oracle. All rights reserved.Usage: SQLLDR keyword=value [,keyword=value,...]Valid Keywords: userid -- ORACLE username/password control -- control file name log -- log file name bad -- bad file name data -- data file name discard -- discard file name discardmax -- number of discards to allow (Default all) skip -- number of logical records to skip (Default 0) load -- number of logical records to load (Default all) errors -- number of errors to allow (Default 50) rows -- number of rows in conventional path bind array or between direct path data saves (Default: Conventional path 64, Direct path all) bindsize -- size of conventional path bind array in bytes (Default 256000) silent -- suppress messages during run (header,feedback,errors,discards,partitions) direct -- use direct path (Default FALSE) parfile -- parameter file: name of file that contains parameter specifications parallel -- do parallel load (Default FALSE) file -- file to allocate extents from skip_unusable_indexes -- disallow/allow unusable indexes or index partitions (Default FALSE)skip_index_maintenance -- do not maintain indexes, mark affected indexes as unusable (Default FALSE)commit_discontinued -- commit loaded rows when load is discontinued (Default FALSE) readsize -- size of read buffer (Default 1048576)external_table -- use external table for load; NOT_USED, GENERATE_ONLY, EXECUTE (Default NOT_USED)columnarrayrows -- number of rows for direct path column array (Default 5000)streamsize -- size of direct path stream buffer in bytes (Default 256000)multithreading -- use multithreading in direct path resumable -- enable or disable resumable for current session (Default FALSE)resumable_name -- text string to help identify resumable statementresumable_timeout -- wait time (in seconds) for RESUMABLE (Default 7200)date_cache -- size (in entries) of date conversion cache (Default 1000)PLEASE NOTE: Command-line parameters may be specified either byposition or by keywords. An example of the former case is 'sqlldrscott/tiger foo'; an example of the latter is 'sqlldr control=foouserid=scott/tiger'. One may specify parameters by position beforebut not after parameters specified by keywords. For example,'sqlldr scott/tiger control=foo logfile=log' is allowed, but'sqlldr scott/tiger control=foo log' is not, even though theposition of the parameter 'log' is correct.
总结
以上就是本文关于oracle数据与文本导入导出源码示例的全部内容,感兴趣的朋友可以参阅:ORACLE SQL语句优化技术要点解析、oracle 数据库启动阶段分析、oracle数据库导入导出命令解析等,如有不足之处,欢迎留言指正,希望对大家有所帮助。感谢大家对网站的支持。
数据
文本
命令
文件
语句
测试
成功
内容
字段
数据库
时候
帮助
选择
源码
示例
相同
差不多
兴趣
分隔符
制表符
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
数据库期末考试 龚安
软件开发学历是关键吗
长春软件开发培训班
数据库技术创建修改表实验代码
数据库的工作
战争与冲突带来的网络安全
深圳电视墙服务器生产厂家
电脑移动联网用的软件开发
网络安全 专科
御龙在天为什么不显示服务器
关系数据库技术试卷
软件开发去哪里学比较好
hgdp 数据库
项目打成jar包运行到服务器中
邢台超融合服务器报价
写信申请软件开发师
磁县软件开发招聘信息
软件开发的特点是什么
物业软件开发商
网络安全 数据泄露
软件开发岗位的薪资待遇
战舰世界 隐藏数据库
网络安全职责分工明细
国家网络安全宣传具体措施
御龙在天为什么不显示服务器
腾讯云服务器的密码
软件开发不好做
2019网络安全通报
btree用于哪种数据库
万得数据库在校外