欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

oracle数据库导入TXT文件方法介绍

程序员文章站 2024-03-03 16:14:58
客户端连接数据库导入 1. 安装有oracle客户端,配好监听。 2. 以oracle数据库app用户的表user_svc_info为例

客户端连接数据库导入

1. 安装有oracle客户端,配好监听。

2. 以oracle数据库app用户的表user_svc_info为例

<span style="color:#3333ff;">create table user_svc_info( 
  phone varchar2(20) not null, 
  svc_id varchar2(32) not null, 
  p_username varchar2(100) null, 
  user_status number not null , 
  p_alias varchar2(50) null, 
  imsi varchar2(32) null, 
  svc_updatetime timestamp(3) null, 
  svc_type number not null, 
  svc_status number not null, 
  rec_updatetime varchar2(20) null, 
  svc_idk varchar2(32) null, 
  prostart_time varchar2(24) null, 
  proend_time varchar2(24) null, 
  down_type number null );</span> 
<span style="color:#3333ff;">在e:\sqlldr下创建一个控制命令的脚本文件,通常以.ctl结尾,如info.ctl 
脚本内容如下: 
load data 
infile 'info.txt' 
append into table user_svc_info 
fields terminated by ',' 
trailing nullcols 
(phone,svc_id,p_username,user_status,p_alias,imsi, 
svc_updatetime timestamp 'yyyy-mm-dd hh24:mi:ss.ff', 
svc_type,svc_status,rec_updatetime,svc_idk, 
prostart_time,proend_time,down_type)</span> 

解释说明:

infile 'info.txt' 表示要导入的文本文件名为info.txt

append into table 后接要导入的表名

此处用append表示追加到表中,若用

insert 表示导入空表,有数据则停止;

replace表示原来表中如果有数据,则会被删除(用delete from table语句)

truncate表示原来表中如果有数据,则会被清除(用truncate table语句)

fields terminated by ','  数据中每行记录用”,”分隔

trailing nullcols    表的字段没有对应的值时允许为空

括号内为表的所有字段,日期格式的字段要进行转换,如上svc_updatetime若是date类型,则用svc_updatetime date 'yyyy-mm-dd hh24:mi:ss'

脚本写好后,脚本与info.txt放在同一个文件夹内,在cmd下执行命令:

e:
cd e:\sqlldr
sqlldr userid=app/app@imusic control=info.ctl

表数据导出:在操作系统下创建导出脚本(要赋予此脚本可执行权限):

表数据导出脚本:

以app用户下的user_svc_info为例,若要使如下语句的结果导出成.txt文件,每个字段的值以”,”分隔:

select phone,svc_type,svc_udatetime from user_svc_ifno where rownum<100; 
可以oracle用户登录系统,创建脚本如vim info.sh 
#!/bin/bash 
sqlplus "app/app"<<eof 
set heading off; 
set echo off; 
set feedback off; 
set verify off; 
set wrap off; 
set pagesize 0; 
set linesize 2500; 
set trimout on; 
set trimspool on; 
spool /usr/local/oracle/user_svc_info_sql.txt; 
select phone||','||svc_type||','||svc_updatetime from user_svc_info where rownum<100; 
set define on; 
set heading on; 
set echo on; 
set feedback on; 
spool off 
quit; 
eof 

执行脚本:

./info.sh


生成的user_svc_info_sql.txt文件则是想导出的数据文件。

set heading  on/off;   让结果行的标题显示/不显示

set echo on/off;控制是否在执行命令时打印出所执行的命令,off则不打印。

set feedback on/off显示由脚本返回的记录数时,脚本选择至少n个记录。 on或off打开或关闭此显示。

set verify on/off控制是否列出在sql语句或pl/sql脚本中变量替换的值

set wrap on/off; 控制是否截断选定行显示如果当前行太宽长。offz则是关闭选定行截断;既允许选择的行换行到下一行。

set trimout on/off;确定是否允许在每行末尾显示空白,off允许在每行末尾显示空白,on不允许输出空白。

set trimspool on/off;确定是否允许在每行末尾显示空格,off允许在每行末尾显示空格,on不允许输出空格。

总结

以上就是本文关于oracle数据库导入txt文件方法介绍,希望对大家有所帮助。感兴趣的朋友可以参阅:oracle rman自动备份控制文件方法介绍 、   、 等。感谢大家对本站的支持。