我正在尝试使用python加载sqlldr,所以我使用subprocess.call来实现这一点。
cmd = 'sqlldr USERID={user}/{password}@Databse_name control={controlfile} data={datafile}' subprocess.call(cmd, shell=True)
输出显示:sqlldr用户ID ={用户}/{密码}@数据库名称控制={控制文件}没有这样的文件目录有人能帮我吗?我们在@后面加什么?
oipij1gg1#
提供完整路径,而不仅仅是文件名。
x7yiwoj42#
请尝试使用shell。请确保您已经下载了instant_client for oracle以及sqlldr。
import os import subprocess BASE_DIR = Path(__file__).resolve().parent control_file = os.path.join(BASE_DIR, 'SAMPLE_ITEM_LOAD.ctrl') data_file = os.path.join(BASE_DIR, 'sample_item_load.csv') my_env = os.environ.copy() my_env["PATH"] = f"{my_env['ORACLE_HOME']}:{my_env['PATH']}" sql_con = f'{username}/{password}@{host}:{port}/{db_sid}' sql_ld_command = f'sqlldr {sql_con} CONTROL={control_file} DATA={data_file}' sql_ldr_proc = subprocess.Popen(sql_ld_command,shell=True, env=my_env, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE) out, err = sql_ldr_proc.communicate() retn_code = sql_ldr_proc.wait()
2条答案
按热度按时间oipij1gg1#
提供完整路径,而不仅仅是文件名。
x7yiwoj42#
请尝试使用shell。请确保您已经下载了instant_client for oracle以及sqlldr。