Carregar dados na tabela de banco de dados Oracle por meio da ferramenta sqlldr
Artigo Diretório
Prefácio
O objetivo deste artigo é colar o código-fonte, ou seja, como carregar os dados na tabela do banco de dados Oracle com a ferramenta sqlldr por meio de um script de shell.
Para uma descrição detalhada dos parâmetros da ferramenta sqlldr, consulte minha outra postagem do blog:
Implementação de script
Use a ferramenta sqlldr no Oracle para carregar dados no banco de dados Oracle
O caminho do arquivo de log pode ser personalizado e ajustado no script
Descrição do Parâmetro
5 parâmetros são necessários para executar o script
dbSid
: SID da biblioteca OraledbUser
: Nome de usuário do banco de dados OracledbPass
: Senha do banco de dados OraclectlFile
: Arquivo de controle de dados (informações importantes, consulte o exemplo abaixo)dataPath
: Caminho do arquivo de dados (ou seja, o caminho do arquivo de dados no seguinte arquivo de controle ctl/home/mds/file/input/add/TEST
)
descrição do arquivo de controle ctl
O arquivo de controle ctl registra as principais informações de armazenamento, que podem ser personalizadas e ajustadas de acordo com a situação real
- Método de carregamento
- arquivo de dados
- estrutura de dados
- Delimitador
Exemplo de arquivo CTL
OPTIONS (DIRECT=true,SKIP_INDEX_MAINTENANCE=true,ERRORS=0) LOAD DATA CHARACTERSET AL32UTF8 infile '/home/mds/file/input/add/TEST/ora_data.txt' TRUNCATE into table user_info fields terminated by '|' trailing nullcols ( USER_ID, USER_NAME, PHONE, ADDRESS )
Código fonte do script
#!/bin/bash
#Define database params
dbSid=$1
dbUser=$2
dbPass=$3
ctlFile=$4
dataPath=$5
ctlName=`basename ${
ctlFile}`
#Sys data [yyyymmdd]
sysDate=`date +'%Y%m%d'`
#Define log params
logPath=/app/log/public/ora_load_data/${sysDate}
logFile=${logPath}/${ctlName}.log
logTemp=${logPath}/${ctlName}.tmp
#Define temp log file for sqlldr, show in moia
badFile=${logPath}/${ctlName}.bad
#Log function
Log()
{
createTime=`date +"%Y-%m-%d %H:%M:%S"`
echo "[${createTime}] $*" |tee -a ${logFile} 2>/dev/null
}
#CheckDir function
CheckDir()
{
if [ ! -d $1 ]; then
mkdir_log=` mkdir -p -m 775 $1 `
if [ $? -ne 0 ]; then
Log "[Error] [$1] create failed, dir not exist, please check..."
exit 255
fi
fi
}
CheckDir "${logPath}"
################### Main program ###################
#check the parameter
if [ $# -ne 5 ]; then
Log "[Error] Please input the right parameter ..."
Log "[Error] Eg:sh ora_load_data.sh oraSid user passwd /app/file/userinfo.ctl /app/file/20200630"
exit 255
fi
#Check ctlFile
if [ ! -f ${ctlFile} ];then
Log "[Error] ${ctlFile} not exist, please check..."
exit 255
fi
#Check dataPath
if [ ! -d ${dataPath} ];then
Log "[Error] ${dataPath} not exist, please check..."
exit 255
fi
cd ${dataPath}
if [ $? -ne 0 ];then
Log "[Error] Failed to change path ${dataPath}..."
exit 255
fi
#Check datafile
datafile=`cat ${
ctlFile}| grep infile |awk -F \' '{
print $2}'`
if [ ! -f ${datafile} ];then
Log "[Error] ${datafile} not exists,please check..."
exit 11
fi
Log "sqlldr ${dbUser}/${dbPass}@${dbSid} errors=100 control=${ctlFile} bad=${badFile} rows=3000 bindsize=33554432 > ${logFile} 2>&1"
sqlldr ${dbUser}/${dbPass}@${dbSid} errors=100 control=${ctlFile} bad=${badFile} log=${logTemp} rows=3000 bindsize=33554432 > ${logFile} 2>&1
cat ${logTemp}
if [ $? -ne 0 ];then
Log "[Error] Failed to load data from ${ctlFile}..."
Log "$*"
exit 1
else
Log "Succ to load data from ${ctlFile}."
fi
Conclusão
Se necessário, leve-o embora; se você reimprimir, adicione um link para este artigo!
Uma vez que existe um número de instalação, deve haver um número de descarga, e o código-fonte será postado outro dia, por favor Aguardando ...
Um ponto é um ponto, pelo menos não zero!
Sobre!