import glob import csv import os def cat_input_files(lst): for f in lst: with open(f, 'r') as inp: reader = csv.reader(inp, delimiter='\t') next(reader) for row in reader: with open('./temp/temp.txt', 'a') as oup: writer = csv.writer(oup, delimiter='\t', lineterminator='\n') writer.writerow(row) def add_id_number(target): id_number = 1649430 for line in open(target, 'r'): line = line.rstrip() if line: with open('input.txt', 'a') as f: print(line, str(id_number), sep='\t' , file=f) id_number += 1 else: print("\n") def main(): if not os.path.exists("./temp"): os.makedirs("./temp") lst = glob.glob("*/*.txt") cat_input_files(lst) target = "./temp/temp.txt" if os.path.exists(target): add_id_number(target) else: print("Failure : No File exists") cmd = "sqlite3 -separator $'\t' ./test.db '.import ./input.txt test'" subprocess.call(cmd, shell=True ) if __name__ == '__main__': main()
これでSQLにインポートまで一気にいけるようになった。
IDにナンバーを振り当てるid_numberの初期値とデータファイルの在り処をformで指定して一気に処理できるのじゃなかろうか。