Имам .csv файл с 22 милиона реда (~850mb), който се опитвам да заредя в postgres db на Amazon RDS. Той се проваля всеки път (получавам грешка при изчакване), дори когато разделям файла на по-малки части (всеки от 100 000 реда) и дори когато използвам chunksize
.
Всичко, което правя в момента, е да зареждам .csv като рамка с данни и след това да го записвам в db с помощта на df.to_sql(table_name, engine, index=False, if_exists='append', chunksize=1000)
Използвам create_engine от sqlalchemy, за да създам връзката: engine = create_engine('postgresql:database_info')
Тествах писането на по-малки количества данни с psycopg2
без проблем, но отнема около 50 секунди, за да напише 1000 реда. Очевидно за 22 метра редове това няма да работи.
Има ли нещо друго, което мога да опитам?
COPY
, така че нямате нужда от двупосочно пътуване до обекти на python (което го прави по-бавно). - person joris   schedule 17.05.2015psycopg2
?) Тъй като 50s за 1000 реда е много по-бавно от това, което изпитвам с база данни postgres. Така че може би отчасти връзката с базата данни е бавна. - person joris   schedule 17.05.2015COPY
? Ако не искате да използвате SQL команди, но останете в python, можете да погледнетеodo
, който използва командаCOPY
под капака за прехвърляне на данни от CSV към SQL: odo.readthedocs.org/en/latest/index.html - person joris   schedule 17.05.2015