Вставка MongoDB в Oracle выполняется в обратном порядке датPython

Программы на Python
Ответить
Anonymous
 Вставка MongoDB в Oracle выполняется в обратном порядке дат

Сообщение Anonymous »

У меня есть код Python, в котором я читаю данные из MongoDB и вставляю их в таблицу базы данных Oracle. Я удалил некоторые части кода (импорт библиотек, подключение к MongoDB и Oracle и т. д.) для простоты:

Код: Выделить всё

from_date_sms_journals = " select nvl(max(s.creation_date_ms),1710793800939)\
from sms_journals s "
oracle_cursor.execute(from_date_sms_journals)
for row in oracle_cursor.fetchall():
from_date = int(row[1])

# today
to_date_sms_journals = 1764102600000
oracle_cursor.execute(to_date_sms_journals)
for row in oracle_cursor.fetchall():
to_date = int(row[0])

fields = {"_id": 1,
"body": 1,
"recipient": 1,
}

sms_insert_query = """ insert /*+ APPEND */ into sms_journals \
(S_ID,\
S_BODY,\
RECIPIENT\
)\
values (:1, :2, :3)"""

batch_size = 10000
counter = 0

print(f'-----------------------------New 2 - Insert Data to Oracle : START at {update}')
sms_journals_query = mycol_act.find({"date": {"$gt": from_date, "$lte": to_date}}, projection=fields,batch_size=batch_size)

rows_to_insert = []
for doc in sms_journals_query:
s_id = str(doc["_id"])
s_body = str(doc.get("body", ''))
recipient = str(doc.get("recipient"))
rows_to_insert.append((s_id, s_body, recipient ))

counter += 1
if counter % batch_size == 0:
oracle_cursor.executemany(sms_insert_query, rows_to_insert)
oracleDB.commit()
rows_to_insert = []
if rows_to_insert:
oracle_cursor.executemany(sms_insert_query, rows_to_insert)
oracleDB.commit()
print("Insert data finished!")
Код работает правильно и вставляет данные с даты > from_date до даты

Подробнее здесь: https://stackoverflow.com/questions/798 ... date-order
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»