PostgreSQLのデータベースをmognodbへコピー
6月1日のエントリで書いた件、スクリプトが間違っていました。最初にPostgreSQLからフェッチして、その後ループ。ループの中でデータフェッチをしていないからwhille()の終了条件にマッチせず、延々と最初にフェッチしたデータを突っ込んでいました。
なかなかデータインサートが終わらないなぁ。。。三時間たっても終わらないなぁ。いい加減、こりゃおかしいなぁと。
修正版はこちら。これはちゃんと動作します。
#!/usr/bin/python import pymongo import psycopg2 import datetime def conv_date(data_tuple): data_list = list(data_tuple) #タプルをリストへ変換 data_list[2] = data_list[2].strftime("%Y%m%d") #日付を文字列へ変換 data_list[3] = data_list[3].strftime("%H%M") #時間を文字列へ変換 return(data_list) title = ('hogehoge', 'fugafuga', 'date', 'time', 'mogamoga') mongo_conn = pymongo.Connection() db = mongo_conn["test"] collection = db["foo"] conn = psycopg2.connect("dbname=testdb user=postgres") cur = conn.cursor() cur.execute("select * from data_tbl;") r = cur.fetchone() while ( r != None ): collection.insert(dict(zip(title,conv_date(r)))) r = cur.fetchone() cur.close() conn.close() mongo_conn.close()
対象データは7万件ほど。32bitのOSでも余裕でした。