一: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 ',',解析的文件分隔符