def import_csv(file_path): """ 所定のフォルダに配置されたCSVファイルから原材料情報、原材料セット情報、保存方法情報、製造会社情報、製造会社製造拠点情報、商品基本情報を 取り込みデータベースに登録する 商品販売情報は取り込み対象外 """ script_nm = os.path.basename(sys.argv[0]) logger = log.BatchLog(os.path.basename(__file__)) logger.debug('<{0}>処理開始', script_nm) logger.info('<{0}>取り込み処理開始', file_path) try: with open(file_path, newline='', encoding='utf-8_sig') as csvfile: csvreader = csv.reader(csvfile) # CSVファイルの命名規則 ############################### # <テーブル名>-data.csv # #################################################### filename = re.split('/', re.split('-', file_path)[0]) tbl_nm = filename[len(filename) - 1] for record in csvfile: if tbl_nm == "material": # 原材料情報、原材料セット情報取り込み m_dao.reg_material_data(re.split(',', record), script_nm) elif tbl_nm == "prsv_method": # 保存方法情報取り込み pm_dao.reg_prsv_method_data(re.split(',', record), script_nm) elif tbl_nm == "maker_comp": # 製造会社情報取り込み mc_dao.reg_maker_comp_data(re.split(',', record), script_nm) elif tbl_nm == "maker_base": # 製造会社製造拠点情報取り込み mb_dao.reg_maker_base_data(re.split(',', record), script_nm) elif tbl_nm == "prod_base": # 商品基本情報取り込み pb_dao.reg_prod_base_data(re.split(',', record), script_nm) else: logger.info('{0}は取り込み対象のファイルではありません', filename) break except Exception as e: logger.error(e) finally: csvfile.close() logger.debug('<{0}>処理終了', script_nm) logger.shutdown()
# encoding utf-8 from dao import psgr_db_conn from log import batch_logger # ロガーの取得 logger = batch_logger.BatchLog(__file__) def reg_prod_base_data(record, scpt_nm): ''' 引数として渡されたレコードをもとに商品基本情報を登録する ''' prod_jan = record[0] prod_name = record[1] material_set_id = record[2] exprat_unit = record[3] exprat_term = record[4] prsv_method_id = record[5].rstrip('\r\n') logger.debug("処理レコード:({0}, {1}, {2}, {3}, {4}, {5})", prod_jan, prod_name, material_set_id, exprat_unit, exprat_term, prsv_method_id) try: conn = psgr_db_conn.Connection() cursor = conn.cursor() # 商品基本情報の登録・更新 upsert_prod_base = """ insert into prod_base values (%s, %s, %s, %s, %s, %s, %s, now(), %s, now()) on conflict(prod_jan)