在客户那里做PoC导入数据的时候,客户导出的CSV文件太多,手工写IMPORT语句的话工作量太大,于是就琢磨用脚本来完成重复的工作,具体代码如下:
import os
filelist = os.listdir("./")
f = open("tables.txt","w")
for l in filelist:
f.write("IMPORT FROM CSV FILE '/hana/shared/HDB/HDB00/TB_JGQL_U8/"+l+"' INTO TB.XD_PUB_JNL_SAV WITH RECORD DELIMITED BY \'\\n\' FIELD DELIMITED BY '!' THREADS 10 BATCH 100000 ERROR LOG '/tmp/JGQL/"+l+"err.log';\n")
f.close()
exit()
之后又发现导出的CSV文件是GBK的,数据库是UTF-8的,需要转码,虽然用UE打开再保存能够实现,但依旧是太麻烦,可以这样做:
import codecs
f1 = codecs.open("sourcefile",encoding='gbk',mode='r')
f2 = codecs.open("targetfile",encoding='utf-8',mode='w')
for l in f1.readlines():
f2.write(l)
f1.close()
f2.close()