Oracle-csv格式文件导入导出

一:csv格式文件导出

 1、创建linux执行文件,例:law.sh

文件内容如下:
export NLS_LANG=编码格式----select userenv('language') from dual,可通过此语句在数据库查询得到,用于解决导出数据中文乱码

sqlplus -s arms/ZC_gl_xt#db08@orcl <<EOF >/dev/null

set echo off;
set feedback off;
set heading off;
set verify off;
set pagesize 0;
set newp none;
set trims on;
set linesize 1500;
set termout off;
set trimout on;
set trimspool on;
set term off;
spool ./law.csv 
@./law.sql;
spool off;
exit;
EOF

内容说明:
set colsep  ,         #分割符
set feedback off      #回显本次sql命令处理记录条数
set heading off       #输出标题
set newp none         #设置查询出来的数据分多少页显示,如果需要连续的数据,中间不要出现空行就把newp设置为none
set pagesize 0        #输出每页行数,为了避免分页设置为0
set linesize 200      #每行大小,如果设置太小,会分行,最好是超好输出最大值
set trimout on        #去除标准输出每行的拖尾空格
set termout off       #显示脚本中的命令的执行结果
set echo on           #设置运行命令是否显示语句
set numwidth 12       #输出number类型域长度

2、创建导出数据控制文件(一个sql语句),例:law.sql

select * from s_bch t where t.bch_level='2';

二:csv格式文件导入

1、创建linux执行文件,例:hn_poor_cif.sh

内容如下:
echo "loader data henan.csv" 
sqlldr cmsii/cms5umx control=/cms/data/impdata/hn_poor_cif.ctl bad=/cms/data/impdata/hn_poor_cif.bad log=/cms/data/impdata/hn_poor_cif.log rows=1000 bindsize=10240000

内容说明:
control:规则控制文件位置,需自行创建
bad:导入出错数据记录,执行程序后生成
log:导入过程日志记录
rows:每次导入行数
bindsize:每次导入大小控制

2、创建control控制文件,例:hn_poor_cif.ctl

内容如下:
load data CHARACTERSET ZHS16GBK 
infile '/cms/data/impdata/cif_poor_inf_2020.csv'
truncate into table cif_poor_inf_2020
fields terminated by ','
trailing nullcols (AREACODE,PROVINCE,CITY,COUNTRY,COUNTRYSIDE,VILLAGE,HZ_CIF_NAME,HBH,YHZGX,PKHSX,TPZT,HZ_ID_NO,CY_CIF_NAME,CY_ID_NO)

内容说明:
1:truncate into table,into table后面指定导入数据库表USER_INFO,且表名必须大写;
   insert :默认方式,在导入记录前要求表为空;
   append :在表中追加新导入的记录;
   replace :删除旧记录(等价delete from table语句),替换成新导入的记录;
   truncate:删除旧记录(等价truncate table语句),替换成新导入的记录;
2:fields terminated by ',',解析的文件分隔符
原文地址:https://www.cnblogs.com/chunxiaozhang/p/15241073.html