Не удается сохранить большой массив данных в MySQL

0

У меня есть фрейм данных Panda, который содержит итоговые [1127618 строк x 64 столбца] и попытался сохранить в mysql заданную команду ниже.

engine = create_engine('mysql+mysqlconnector://user:[email protected]/joohun_test', echo=False)
df.to_sql(name='tst_dr3_201801', con=engine, if_exists = 'replace', index=False 

когда он выполняет эту команду, он берет навсегда и, похоже, никогда не завершает задачу. Поэтому, если я уменьшу размер кадра данных до [10000 строк × 64 столбца], он, наконец, может быть сохранен в базе данных Mysql. Но я столкнулся с различной проблемой в окончательной форме данных, сохраненных в MySQL. Поскольку вы видите столбцы "smaster_uuttype" и "user", между символами добавляется пробел.

MariaDB [joohun_test]> select serialno, uuttype, smaster_uuttype,failingtestname,cpptimeid, user, year, month from tst_dr3_sample limit 10;
+-------------+--------------------+--------------------------------------+-----------------+-----------+------------------+------+-------+
| serialno    | uuttype            | smaster_uuttype                      | failingtestname | cpptimeid | user             | year | month |
+-------------+--------------------+--------------------------------------+-----------------+-----------+------------------+------+-------+
| ABCDEFGH | ABCD-ABC-2500ABCD= | D E F G - H I J - 2 5 0 0 A B C D =  |                 | NULL      | d u n g l e      | 2018 |     1 |

однако, глядя на ту же строку блока данных panda, между символами нет пробела.

    serialno    uuttype  smaster_uuttype    failingtestname cpptimeid   user    year    month
0   ABCDEFGH    ABCD-ABC-2500ABCD=  DEFG-HIJ-2500ABCD=      None    dungle  2018    1

есть две вещи, которые я хотел бы знать.

  1. Я хотел бы знать, есть ли способ сохранить данные в mysql с тем, как строка сохраняется в panda без пробела между символами.
  2. Есть ли способ сохранить большой размерный фрейм в mysql вместо того, чтобы обмениваться файлами данных на небольшие кадры?
  • 0
    кажется, существует проблема кодирования, которая вызвала лишние пробелы.
  • 0
    На вопрос 2, если ваш фрейм данных имеет миллиарды байт, я не думаю, что это можно сделать быстро. Параметр = chunksize of to_sql может помочь при возникновении проблемы тайм-аута, но не должен быть полезным для эффективного
Показать ещё 4 комментария
Теги:
pandas
mariadb

1 ответ

0

Использование df.to_sql() может иметь проблемы. Вы должны использовать собственный способ сделать это. Вот пример https://dev.mysql.com/doc/connector-python/en/connector-python-example-cursor-transaction.html

Ещё вопросы

Сообщество Overcoder
Наверх
Меню