Skip to content

Oracle

Unix

data.bcp MSTR


vim script.sh

!/bin/sh
rm -rf mapping.bcp
iconv -f ISO-8859-14 PRODUCT_SUPPLIER.bcp -t UTF-8 -o mapping.bcp

export NLS_LANG=AMERICAN_AMERICA.WE8ISO8859P1
sqlldr EXA_TUKMSTRP/quality1@exa_gbtukprdd_an control=mapping.ctl log=mapping1.log skip=1

$ chmod +x script.sh


mapping.ctl

load data
infile 'mapping.bcp'
replace
into table temp_del1
fields terminated by "?" OPTIONALLY ENCLOSED BY '"'
trailing nullcols
(
COL1 CHAR(200),
COL2 CHAR(200),
COL3 CHAR(200)
)

$ . script.sh

create table temp_del1(
COL1 varchar(200),
COL2 varchar(200),
COL3 varchar(200)
);


Windows

Convert file to UTF-8
iconv -f ISO-8859-14 CM_PRODUCT_SUPPLIER_000000693.bcp -t UTF-8 -o mapping.bcp


script.bat
sqlldr EXA_TUKMSTRP/quality1@exa_gbtukprdd_an CONTROL=test1.ctl LOG=test1.log BAD=test1.bad skip=1
pause


mapping.ctl load data
CHARACTERSET WE8ISO8859P1
infile 'temp1.bcp'
replace
into table temp_del1
fields terminated by "?" OPTIONALLY ENCLOSED BY '"'
trailing nullcols
(
COL1 CHAR(200),
COL2 CHAR(200),
COL3 CHAR(200)
)


Python

from sqlalchemy import *
import csv

username = "prakriti"
password = "password"
database_instance = "exadata123"
conn_str = 'oracle://%s:%s@%s' % (username, password, database_instance)
engine = create_engine(conn_str)
CONN = engine.connect()
CONN.execute("Alter session enable parallel dml")

def utf_8_encoder(unicode_csv_data):
for line in unicode_csv_data:
yield line.decode('iso-8859-1').encode('utf-8')

ch = "\xbf".decode("iso-8859-1").encode('utf-8')

i = 1
with open('mapping.dat', 'rb') as csvfile:
spamreader = csv.reader(utf_8_encoder(csvfile))
for row in spamreader:
str1 = ''.join([word.replace('\xbf',',') for word in row])
str1 = ''.join([word.replace(ch,',') for word in row])
str2 = str1.replace("\'"," ")
str3 = ''.join("'" + str(s) + "'," for s in str2.split(",")).strip(",")

if i <> 1:
query = "insert into temp values("+str3+")"
CONN.execute(query)
i = i + 1