Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Nie można załadować danych z pliku do tabeli Oracle za pomocą executeMany()

W tym pliku danych testowych:

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

ten kod działa:

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)

W SQL*Plus później:

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



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Błąd podczas wywoływania java z PL/SQL

  2. Praktyczne przykłady użycia kursora Oracle w sposób wyraźny

  3. Zapytanie usuwania nie działa z aplikacji Java

  4. ora:12505:TNS:słuchacz nie zna obecnie SID podanego w deskryptorze połączenia (DBD ERROR:OCIServerAttach)

  5. INSERT with ORDER w Oracle