MacのSQLiteではIDカラム分の無いファイルをインポートしようとしたらカラムが足らないのでnullを埋めるよという警告が出た上でインポートされ、ついでにPRIMARY KEYなのでインクリメントされたIDを自動でふってくれるのだが、どういうわけかCentOSではエラーを出してインポートすらしてくれない。なので、まえもってIDを振ってやってからインポートするしかないので、そのための方法をいろいろ考えた結果、 Pythonで文字列処理をすることにした。
id_add.py
import os.path import sys def check_argv(): if len(sys.argv) == 0 and len(sys.argv) > 2: #sys.argvはコマンドライン引数、len(sys.argv)は引数の数。 return False else: return True def add_line_number(target): line_number = 10001 #ここに開始ID(前回までの最終ID+1)を入れておく for line in open(target, 'r'): line = line.rstrip() if line: print(line, str(line_number), sep='\t' ) line_number += 1 else: print("\n") def main(): if check_argv(): target = sys.argv[1] if os.path.exists(target): add_line_number(target) else: print("Failure : No File exists") else: sys.exit() if __name__ == '__main__': main()
実行は
# python3 id_add.py target.txt > result.txt
これでいけるはず。
参考ページ
http://uchikoshi22.hatenadiary.jp/entry/20100626/1316074659