mongoDb에서 pymongo/pandas로 대량 업데이트/삽입하는 방법은 무엇입니까? 내가 얻는 오류는 batch op errors occurred
내가 내가하고 싶은 이유는 내가 "_id"
을 설정했기 때문이다. 첫 번째 실행에서는 코드가 제대로 실행되지만 두 번째 실행에서는 실패합니다. 워크 플로우에서 팬더를 사용하고 싶습니다. 데이터에는 datetime 객체가 있습니다.MongoDB에서 PyMongo로 벌크 삽입/업데이트 수행
upsert = True
의 구문은 완전히 다릅니다 (Update
). "_id"
또는 "qid"
을 설정할 수있는 update
의 효율적인 솔루션이 유용 할 것입니다. 그러나 파이썬 datetime 객체가 있습니다!
InSQL = 'SELECT * from database2.table2 '
sqlOut = pd.read_sql(InSQL,cxn)
sqlOut['_id'] = "20170101" + ":"+ sqlOut['Var']
dfOut = sqlOut.to_json(orient='records',date_format='iso')
try:
db["test"].insert_many(json.loads(dfOut))
except Exception as e: print e
가 나는 아무 대답 만료 50 PT의 현상금을 주었다. 흠 ...
몽고는 'string base input'을 사용했지만 어떤 변수 삽입도 허용하지 않습니다. (이 경우를 확인하십시오.) (http://stackoverflow.com/questions/2803852/python-date-string-to-date-object), 'json.loads (dfOut)'항목으로 로컬 변수를 삽입 할 수 없습니다! 기본 키'YYYYmmDDHHMMSS' +'Counter value' – dsgdfg
'BulkWriteError' 세부 사항을 파헤쳐서 무슨 일이 일어나고 있는지 더 잘 알 수 있습니다. 개인적으로 정의 된 ID가 중복되거나 12 바이트 제한을 위반했을 수 있습니다. 자세한 내용은 http://stackoverflow.com/questions/30355790/mongodb-bulk-write-error를 참조하십시오. –
_id가 처음으로 작동한다는 사실은 12 바이트 제한이 문제가 아니라고 알려줍니다. 예, _id 또는 gid는 dups이며 업데이트해야합니다. – Merlin