Escape-символ Python в списке, вызывающий проблему - PullRequest
0 голосов
/ 24 октября 2018

Ниже приведена ссылка на мой код SQOOP, написанный на python:

https://bitbucket.org/factorsense/programming/src/master/Python/RDBMS_BigData%20Migration/sqoop_oracle_hdfs_incremental.py

В одной из частей я создаю список команд sqoop, и команда выполняется всервер Linux:

def sqoop_job(table_name):
#The last value which was loaded into the Data Hub is picked from the SQOOP Audit Table which holds the details from the last run.
lastvalue =last_value(table_name)
#Last Update Date is fetched from the source and this is also updated into the SQOOP Audit Table.
last_update_date = max_load_date(table_name)
#print(last_update_date)
init_query = create_query(table_name)
final_query = init_query+"'"+lastvalue+"'"+','+"'"+"DD/MM/YYYY HH24:MI:SS""'"+')'+' AND $CONDITIONS'
print(final_query)
cmd = ['sqoop', 'import', '-Dhadoop.security.credential.provider.path='+alias_provider, '--connect', oracle_url, '--username', username,'--password-alias', password_alias,'-m', '1', '--as-textfile','--target-dir', target_dir_incr+'/'+table_name, '--query',final_query]
#

Проблема в том, что список печатается с escape-символами в запросе:

['sqoop', 'import', u'-Dhadoop.security.credential.provider.path=jceks://hdfs/tmp/symf.password.jceks', '--connect', u'jdbc:oracle:thin:@sl09.atradiusnet.com:1519/SYMF.atradiusnet.com', '--username', u'NLSMAY1', '--password-alias', u'symf.db.alias', '-m', '1', '--as-textfile', '--target-dir', u'/user/incoming_data/native_zone/symphony/incremental/TBOR_CURRENCY_EXCHANGE_RATES', '--query', u'"select  ORCUY_CODE,ORCUY_CODE_BASE,TYP,EFFECT_TO_DAT,ORSUS_ID,EFFECT_FROM_DAT,AMT,LAST_UPDATE_DAT,LAST_UPDATE_SEQ ,current_timestamp, \'NLSMAY1\' from ORABUP0.TBOR_CURRENCY_EXCHANGE_RATES a  where last_update_dat > to_timestamp(\'05/10/2018 15:13:05\',\'DD/MM/YYYY HH24:MI:SS\') AND $CONDITIONS']

Теперь часть запроса выполняется в базе данных oracle с escape-символамии это не удается в оракуле:

 Executing SQL statement: "select  BUPIY_ID,EFFECT_FROM_DAT,EFFECT_TO_DAT,BUSINESS_TYP,ORSUS_ID,LAST_UPDATE_DAT ,current_timestamp, \'NLSMAY1\' from ORABUP0.TBPO_POL_BUSINESS_TYPES a  where last_update_dat > to_timestamp(\'12/10/2018 20:42:59\',\'DD/MM/YYYY HH24:MI:SS\') AND  (1 = 0)

Может кто-нибудь, пожалуйста, помогите мне решить эту проблему?

...