导读:
对方的接口是ftp上的txt文件,最终我这边采用sqlload导入到表中
–创建表
drop table T_NONPON_NE;
create table T_NONPON_NE
(
NENAME VARCHAR2(255),
NEOBJECTID VARCHAR2(255),
HOSTNAME VARCHAR2(255),
NETYPE VARCHAR2(255),
NEMODEL VARCHAR2(255),
VEDOR VARCHAR2(255),
CITY VARCHAR2(255),
SYNTIME date
);
drop table T_NONPON_PORT;
create table T_NONPON_PORT
(
PORTNAME VARCHAR(255),
PORTOBJETCID VARCHAR(255),
STATUS VARCHAR(255),
Photoelectric VARCHAR(255),
PORTRATE VARCHAR(255),
NEOBJECTID VARCHAR(255),
SYNTIME date
);
–编写ctl文件
–新建NONPON_NE.ctl文件,添加一下内容
LOAD DATA
INFILE ‘/home/oracle/NONPON_NE_20190710.txt’
INTO TABLE T_NONPON_NE
APPEND
FIELDS TERMINATED BY ‘$$’
OPTIONALLY ENCLOSED BY x’09’
TRAILING NULLCOLS
(
nename,
neobjectid,
hostname,
netype,
nemodel,
vedor,
city,
syntime “sysdate”
)
–新建NONPON_PORT.ctl文件,添加一下内容
LOAD DATA
INFILE ‘/home/oracle/NONPON_PORT_20190710.txt’
INTO TABLE T_NONPON_PORT
APPEND
FIELDS TERMINATED BY ‘$$’
OPTIONALLY ENCLOSED BY x’09’
TRAILING NULLCOLS
(
portname,
portobjetcid,
status,
photoelectric,
portrate,
neobjectid,
syntime “sysdate”
)
–编写sqlload导入命令
sqlldr userid=im/NqMAYmnrxmt09mUe control=/home/oracle/sqlload_ctl/NONPON_NE.ctl log=/home/oracle/sqlload_log/NONPON_NE.log bad=/home/oracle/sqlload_log/NONPON_NE.bad discard=/home/oracle/sqlload_log/NONPON_NE.discard
sqlldr userid=im/NqMAYmnrxmt09mUe control=/home/oracle/sqlload_ctl/NONPON_PORT.ctl log=/home/oracle/sqlload_log/NONPON_PORT.log bad=/home/oracle/sqlload_log/NONPON_PORT.bad discard=/home/oracle/sqlload_log/NONPON_PORT.discard
以下是本人写的自动化脚本
#!/bin/bash
SRCHOST=“10.221.171.97”
SRCUSER=“ftpuser”
SRCPASS=“Ftp@user01”
SRCPATH="/"
DESPATH="/oraclebak/ftpfile"
Yesterday=date -d "1 day ago" +%Y%m%d
RUNDATE=date +%Y%m%d
LOGFILE="/oraclebak/ftpfile/ftplog_${RUNDATE}"
ftp -n<
user $SRCUSER $SRCPASS
prompt off
bin
cd ${SRCPATH}
lcd ${DESPATH}
mget NONPON_*
mget OLT_*
mget ONU_DZY*
mget POS_DZY_GC*
bye
END
~
echo "open S R C H O S T " > {SRCHOST}" > SRCHOST">{LOGFILE}
echo "user ${user_name} p a s s w o r d " > > {password}" >> password">>{LOGFILE}
echo
echo “bye” >>${LOGFILE}
echo "end mkdir d e s t p a t h " > > {dest_path}">> destpath">>{LOGFILE}
sed -i “s/ Y e s t e r d a y / {Yesterday}/ Yesterday/{RUNDATE}/” /oraclebak/ftpfile/NONPON_NE.ctl >> L O G F I L E s e d − i " s / {LOGFILE} sed -i "s/ LOGFILEsed−i"s/{Yesterday}/ R U N D A T E / " / o r a c l e b a k / f t p f i l e / N O N P O N P O R T . c t l > > {RUNDATE}/" /oraclebak/ftpfile/NONPON_PORT.ctl >> RUNDATE/"/oraclebak/ftpfile/NONPONPORT.ctl>>{LOGFILE}
sqlldr userid=im/NqMAYmnrxmt09mUe control=/oraclebak/ftpfile/NONPON_NE.ctl log=/oraclebak/sqlload_log/NONPON_NE_KaTeX parse error: Expected group after '_' at position 51: …d_log/NONPON_NE_̲{RUNDATE}.bad discard=/oraclebak/sqlload_log/NONPON_NE_KaTeX parse error: Expected group after '_' at position 134: …log/NONPON_PORT_̲{RUNDATE}.log bad=/oraclebak/sqlload_log/NONPON_PORT_KaTeX parse error: Expected group after '_' at position 57: …log/NONPON_PORT_̲{RUNDATE}.discard
cd /oraclebak/ftpfile
mv *.txt /oraclebak/ftpfile/bak