I have a python script that receives a large csv file and should load the data into an Oracle table. The plan is to use SQL Loader to accomplish this.
I have Instant Client 19.8 installed with SQL Loader. My Python code is run via this script
#!/bin/sh
PY=py
APP_HOME=/C/Users/.../Projects/.../updates
APP_BIN=$APP_HOME/bin
APP_LIB=$APP_HOME/lib
APP_CONFIG=$APP_HOME/config
APP_LOGS=$APP_HOME/logs
APP_DATA=$APP_HOME/data
APP_OUTPUT=$APP_HOME/output
GLOBAL_ENV_DIR=$APP_HOME/ENV
export APP_HOME
export APP_BIN
export APP_LIB
export APP_CONFIG
export APP_LOGS
export APP_DATA
export APP_OUTPUT
export GLOBAL_ENV_DIR
export LD_LIBRARY_PATH=/C/Oracle/instantclient_19_8
export PYTHONPATH=$PYTHONPATH:$APP_HOME:$APP_BIN:$APP_LIB:$APP_LIB/util:$APP_CONFIG:$APP_LOGS:$APP_DATA:$APP_OUTPUT:
echo $PYTHONPATH
echo
echo $PY $APP_BIN/update/update_processor.py --globalenvdir $GLOBAL_ENV_DIR --apphomedir $APP_HOME --date 01012020 $1 $2 $3 $4
echo
$PY $APP_BIN/update/update_processor.py --globalenvdir $GLOBAL_ENV_DIR --apphomedir $APP_HOME --date 01012020 $1 $2 $3 $4
Then, I attempt to run SQL Loader like this
subprocess.call('sqlldr user/pass@.../... control=config/update_processor.ctl data=data/data.dat')
And see this error
Message 2100 not found; No message file for product=RDBMS, facility=ULMessage 2100 not found; No message file for product=RDBMS, facility=UL
I can of course run SQL Loader on its own or from a separate Python script, so I assume something is not configured correctly in my shell script?