Exemplo n.º 1
0
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()
Exemplo n.º 2
0
# 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)