我嘗試通過CSV從Oracle數據加載到Vertica的文件從甲骨文到Vertica的複製通過CSV:失落行
使用蟒蛇,
寫這個劇本從甲骨文
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)
創建CSV
寫這個劇本的COPY CSV至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()
fineshed操作我有proble後m from oracle 未裝載40 000行 但Vertica 39700行。
哪裏可以有問題以及如何解決?
嘗試指定REJECTED DATA和EXCEPTIONS子句以查看某些記錄是否被拒絕。 另外,你爲什麼使用flex解析器?如果有的話,它很慢。我使用fcsvparser的唯一情況是列順序未知或值包含多行字符串。 – savyuk
如果我想在文件中上傳拒絕的數據和異常,我必須在vertica serter上寫路徑文件,或者我可以通過windows服務器編寫本地路徑,我將嘗試運行腳本?例如FILE_NAME_REJECTED_DATE =「C:\\ DataBases \\ csv \\ rejected_date_%s.csv」%(TABLE_NAME)cursor.copy(「COPY%s。%s FROM stdin DELIMITER as';'rejected data'%s'」 %(SCHEMA_NAME,TABLE_NAME,FILE_NAME_REJECTED_DATE),my_file) –
它將保存執行腳本的文件(在本例中爲本地文件),被拒絕的數據文件將填充未複製的行,異常文件將包含原因 – IddoE