sql >> データベース >  >> RDS >> Oracle

executeMany()を使用してファイルからOracleテーブルにデータをロードできません

    このテストデータファイルの場合:

    1|Fred|Nurke|21|UK
    2|Henry|Crun|21|UK
    

    このコードは機能します:

    import logging
    import cx_Oracle
    import csv
    import sys
    import os
    
    if sys.platform.startswith("darwin"):
        cx_Oracle.init_oracle_client(lib_dir=os.environ.get("HOME")+"/Downloads/instantclient_19_8")
    
    insertQuery="insert into test (id,name,surname,age,country) values (:1, :2, :3, :4, :5)"
    oracleconnection = 'un/[email protected]/orclpdb1'
    my_separator='|'
    file_name = 'demo_2021.csv'
    
    try:
        con=cx_Oracle.connect(oracleconnection)
        cur=con.cursor()
    
        # Predefine the memory areas to match the table definition
        cur.setinputsizes(None, 50, 50, None, 50)
    
        # Adjust the batch size to meet your memory and performance requirements
        batch_size = 10000
    
        with open(file_name, 'r') as csv_file:
            csv_reader = csv.reader(csv_file, delimiter=my_separator)
            data = []
            for line in csv_reader:
                data.append((line[0], line[1], line[2], line[3], line[4]))
                if len(data) % batch_size == 0:
                    cur.executemany(sql, data)
                    data = []
            if data:
                cur.executemany(insertQuery, data)
            con.commit()
    
            
    except Exception as er:
        print(er)
    

    その後のSQL*Plusの場合:

      ID NAME  SURNAME AGE COUNTRY
    ---- ----- ------- --- -------
       1 Fred  Nurke    21 UK
       2 Henry Crun     21 UK
    



    1. コマンドラインで.sqlファイルを実行する

    2. Oracle SELECT-二重引用符または二重引用符なし?

    3. SQL-特定のアイテムのみを含む注文を検索し、製品ごとに表示する

    4. mysqlテーブルにblobデータ型値を挿入中にエラーが発生する