Массовая передача данных в таблицу базы данных DBeaver, как очень быстро вставить ⇐ Python
Массовая передача данных в таблицу базы данных DBeaver, как очень быстро вставить
Я пробовал много методов для вставки данных из фрейма данных в базу данных.
Ни один метод не помог мне вставить быстро, прошло 2 дня и 3 дня, после чего возникла ошибка тайм-аута.
Вот несколько методов, которые я пробовал
[*]Первый метод: я преобразовал фрейм данных в словарь и попытался загрузить базу данных.
Вот пример данных: Примечание: я делюсь 20 строками данных, но на самом деле у меня огромный объем данных
conn = psycopg2.connect( хост = 'redshift-####-dev.)00000.us-east-1.redshift.amazonaws.com' , база данных = '*****', пользователь = '****', пароль='*****', порт = '5439' ) print("Успешное подключение к RedShift Dev") Cur = конн.курсор () df_dic =[{'case_id': 69370, 'column_name': 'subject', 'split_text': 'working', 'split_text_cnt': 1, 'load_ts': '2023- 12-15'}, {'case_id': 69370, 'column_name': 'subject', 'split_text': 'scenes', 'split_text_cnt': 1, 'load_ts': '2023-12-15'}, {' case_id': 69370, 'column_name': 'subject', 'split_text': 'назначено', 'split_text_cnt': 1, 'load_ts': '2023-12-15'}, {'case_id': 69371, 'column_name': 'subject', 'split_text': 'redirected', 'split_text_cnt': 1, 'load_ts': '2023-12-15'}, {'case_id': 69371, 'column_name': 'subject', 'split_text': 'ge', 'split_text_cnt': 2, 'load_ts': '2023-12-15'}, {'case_id': 69371, 'column_name': 'subject', 'split_text': 'sensor', 'split_text_cnt': 1, 'load_ts': '2023-12-15'}, {'case_id': 69371, 'column_name': 'subject', 'split_text': 'flush', 'split_text_cnt': 1, 'load_ts': '2023-12-15'}, {'case_id': 69371, 'column_name': 'subject', 'split_text' ': 'motion', 'split_text_cnt': 1, 'load_ts': '2023-12-15'}, {'case_id': 69371, 'column_name': 'subject', 'split_text': 'led', ' Split_text_cnt': 1, 'load_ts': '2023-12-15'}, {'case_id': 69371, 'column_name': 'subject', 'split_text': 'fixture', 'split_text' _cnt': 1, 'load_ts': '2023-12-15'}, {'case_id': 69371, 'column_name': 'subject', 'split_text': 'contact', 'split_text_cnt': 1, 'load_ts': '2023-12-15'}] sql = "INSERT INTO odey.sfc_ca_sit_di (case_id,column_name,split_text,split_text_cnt,load_ts) ЗНАЧЕНИЯ (%(case_id)s,%(column_name)s,%(case_subject)s,%(Case_Subject_Split_Count)s,%(load_date)s )" cur.executemany(sql, df_dic) конн.коммит() @этот метод я пробовал
[*]Второй метод, который я попробовал использовать в базе данных, который преобразуется в кортеж и выполняет запрос.
final_out — это кадр данных
sql = "INSERT INTO sey.sfdse_sp_di (case_id,column_name,split_text,split_text_cnt,load_ts) ЗНАЧЕНИЯ (%s,%s,%s,%s,%s)" для строки в Final_out.values.tolist(): cur.execute(sql, кортеж(строка)) #print(кортеж(строка)) конн.коммит() Оба метода занимают несколько дней
Кто-нибудь может предложить лучшие методы очень быстрой вставки данных
это огромные данные, около 600 000 записей
Я пробовал много методов для вставки данных из фрейма данных в базу данных.
Ни один метод не помог мне вставить быстро, прошло 2 дня и 3 дня, после чего возникла ошибка тайм-аута.
Вот несколько методов, которые я пробовал
[*]Первый метод: я преобразовал фрейм данных в словарь и попытался загрузить базу данных.
Вот пример данных: Примечание: я делюсь 20 строками данных, но на самом деле у меня огромный объем данных
conn = psycopg2.connect( хост = 'redshift-####-dev.)00000.us-east-1.redshift.amazonaws.com' , база данных = '*****', пользователь = '****', пароль='*****', порт = '5439' ) print("Успешное подключение к RedShift Dev") Cur = конн.курсор () df_dic =[{'case_id': 69370, 'column_name': 'subject', 'split_text': 'working', 'split_text_cnt': 1, 'load_ts': '2023- 12-15'}, {'case_id': 69370, 'column_name': 'subject', 'split_text': 'scenes', 'split_text_cnt': 1, 'load_ts': '2023-12-15'}, {' case_id': 69370, 'column_name': 'subject', 'split_text': 'назначено', 'split_text_cnt': 1, 'load_ts': '2023-12-15'}, {'case_id': 69371, 'column_name': 'subject', 'split_text': 'redirected', 'split_text_cnt': 1, 'load_ts': '2023-12-15'}, {'case_id': 69371, 'column_name': 'subject', 'split_text': 'ge', 'split_text_cnt': 2, 'load_ts': '2023-12-15'}, {'case_id': 69371, 'column_name': 'subject', 'split_text': 'sensor', 'split_text_cnt': 1, 'load_ts': '2023-12-15'}, {'case_id': 69371, 'column_name': 'subject', 'split_text': 'flush', 'split_text_cnt': 1, 'load_ts': '2023-12-15'}, {'case_id': 69371, 'column_name': 'subject', 'split_text' ': 'motion', 'split_text_cnt': 1, 'load_ts': '2023-12-15'}, {'case_id': 69371, 'column_name': 'subject', 'split_text': 'led', ' Split_text_cnt': 1, 'load_ts': '2023-12-15'}, {'case_id': 69371, 'column_name': 'subject', 'split_text': 'fixture', 'split_text' _cnt': 1, 'load_ts': '2023-12-15'}, {'case_id': 69371, 'column_name': 'subject', 'split_text': 'contact', 'split_text_cnt': 1, 'load_ts': '2023-12-15'}] sql = "INSERT INTO odey.sfc_ca_sit_di (case_id,column_name,split_text,split_text_cnt,load_ts) ЗНАЧЕНИЯ (%(case_id)s,%(column_name)s,%(case_subject)s,%(Case_Subject_Split_Count)s,%(load_date)s )" cur.executemany(sql, df_dic) конн.коммит() @этот метод я пробовал
[*]Второй метод, который я попробовал использовать в базе данных, который преобразуется в кортеж и выполняет запрос.
final_out — это кадр данных
sql = "INSERT INTO sey.sfdse_sp_di (case_id,column_name,split_text,split_text_cnt,load_ts) ЗНАЧЕНИЯ (%s,%s,%s,%s,%s)" для строки в Final_out.values.tolist(): cur.execute(sql, кортеж(строка)) #print(кортеж(строка)) конн.коммит() Оба метода занимают несколько дней
Кто-нибудь может предложить лучшие методы очень быстрой вставки данных
это огромные данные, около 600 000 записей
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Spring Batch: как БЫСТРО ВСТАВИТЬ В ТАБЛИЦУ 1 миллион сообщений от Kafka
Anonymous » » в форуме JAVA - 0 Ответы
- 15 Просмотры
-
Последнее сообщение Anonymous
-