使用ctl将txt导入表数据
1.先用sh导出txt源数据;
2.写一份ctl文档;
3.最后用sqlldr命令根据ctl文档的字段配置将txt源数据导入到目标表;
步骤1范例,生成TMP_HELPER_ACCOUNT.txt文档
#!/bin/sh
sqlplus -S ha/ha2017@fdb >TMP_HELPER_ACCOUNT.txt<< EOF
set heading off
set pagesize 0;
set feedback off;
set verify off;
set echo off;
SET LINESIZE 6000;
select user_id ||'$'||helper_id ||'$'||helper_name ||'$'||is_secretary ||'$'||is_residency from TMP_HELPER_ACCOUNT ;
exit;
EOF
echo '666'
步骤2范例,创建TMP_HELPER_ACCOUNT.ctl文档
load data
append into table TMP_HELPER_ACCOUNT
fields terminated by '$'
OPTIONALLY ENCLOSED BY '"'
TRAILING NULLCOLS (user_id
,helper_id
,helper_name
,is_secretary
,is_residency )
步骤3范例,(TMP_HELPER_ACCOUNT.txt和TMP_HELPER_ACCOUNT.ctl要上传到同一目录 )
执行 sqlldr userid=ha/ha2018@fdb2018 control=TMP_HELPER_ACCOUNT.ctl data=TMP_HELPER_ACCOUNT.txt rows=100000 errors=100000 direct=true;
-----------------------------------------------------------------------------------------------------------------------------
-----------------------------------------------------------------------------------------------------------------------------
使用ctl将csv导入本地的表
(先excel文件另存为csv文件(这份csv不知道编码),再ue新建一个文件,设置为utf-8文件(高级-配置-编辑器-编码类型:选中 新建UTF-8 编码文件),再把当时另存为的csv的数据复制到这份utf-8文件中,文件命名testimp-utf-8.csv)
1.本地: 使用WCP 把 testimp-utf-8.csv 和 testimp.ctl 放到 /home/pap_etl/etl_bas/pap_shell 目录。
2.执行本地终端 ,设置字符集为utf-8。(Terminal -> Appearance-> Character encoding: 选择UTF-8 )
测试机Linux配置:10.9.13.87
pap_etl/CEik46oYh49T2HM$
shell目录 /home/pap_etl/etl_bas/pap_shell
3.执行以下命令
sqlldr userid=hainan/hainan2017@fpydb control=/home/pap_etl/etl_bas/pap_shell/testimp.ctl ;
#sqlldr userid=hainan/hainan2017@fpydb control=testimp.ctl ; 这种绝对路径也是可以的
---这样就导入到本地的 t_imp_stu1表,可以比较了
ctl范例:指定某个csv文件 infile可用绝对路径和相对路径
load data
infile '/home/pap_etl/etl_bas/pap_shell/testimp-utf-8.csv'
append into table t_imp_stu1
fields terminated by ','
OPTIONALLY ENCLOSED BY '"'
TRAILING NULLCOLS (id
,name
,id_card
,xueji
,jiuxue_status
,zaidu_school
,zaidu_xueduan
,is_shouzhu
,file_name )
-----------------------------------------------------------------------------------------------------------------------------
-----------------------------------------------------------------------------------------------------------------------------
/*
----查看用户登录时自动加载的用户配置文件 里面可以看到编码格式如 export LANG=zh_cn.UTF-8
cat .bash_profile
----让上面的设置生效
source .bash_profile
----csv文件也utf-8编码,再用ctl导入数据库,中文就不会出现类似?的乱码了。
*/