Skip to main content

Copy from Oracle to Vertica via CSV

  • August 22, 2017
  • 3 replies
  • 13 views

drno-reg
Forum|alt.badge.img+1

Hello,

I try to load data from Oracle to Vertica via CSV file

Used python,

wrote this script for create CSV from Oracle

csv_file=open("C:\DataBases\csv\%s_%s.csv" % (FILE_NAME, TABLE_NAME), "a",encoding='utf-8')
for row in cursor:
count_rows+=1
result_inside={}
row_content=[]
for col, val in zip(col_names, row):
result_inside[col] = val
row_content.append(result_inside[col])
result_select_from_oracle.append(result_inside)
file.write(json.dumps(result_inside, default = myconverter))
writer = csv.writer(csv_file, delimiter=';', quoting=csv.QUOTE_ALL)
writer.writerow(row_content)

wrote this script for COPY CSV to Vertica

connection = vertica_python.connect(**conn_info)
cursor = connection.cursor()
with open("C:\DataBases\csv\%s_%s.csv" % (FILE_NAME, TABLE_NAME), "rb") as fs:
record_terminator='\n')" %(SCHEMA_NAME, TABLE_NAME), my_file)
cursor.copy("COPY %s.%s from stdin PARSER fcsvparser(type='traditional', delimiter=';', record_terminator='\n')" %(SCHEMA_NAME, TABLE_NAME), my_file)
connection.commit()
connection.close()

After fineshed operation I had problem
from oracle
Unloaded 40 000 rows
BUT in Vertica 39700 rows.

Where there can be a problem and how to solve it?

3 replies

peterjansens
Forum|alt.badge.img
  • Participating Frequently
  • August 22, 2017

sKwa
Forum|alt.badge.img+1
  • Participating Frequently
  • August 22, 2017

Hi!

cursor.copy("COPY %s.%s from stdin PARSER fcsvparser(type='traditional', delimiter=';', record_terminator='\n')" %(SCHEMA_NAME, TABLE_NAME), my_file)

Why do you use fcsvparser ? At least one row lost because of header.

Try a standard Vertica parser

COPY %s.%s FROM STDIN DELIMITER ';'  ...

COPY LOCAL for my opinion is better than COPY ... STDIN
COPY params, take a look on params ABORT ON ERROR, REJECTED DATA and EXCEPTIONS.


FYI: http://vertica-forums.com/viewtopic.php?t=2642&p=8851#p8521


drno-reg
Forum|alt.badge.img+1
  • Author
  • Participating Frequently
  • August 23, 2017

Why If I not used option type='traditional' - loading rows = 0?