Есть ли ограничение на размер файла (CSV), который сценарий Python может читать / записывать? - PullRequest
1 голос
/ 19 октября 2010

Завтра я напишу небольшой скрипт на Python, чтобы сначала извлечь все данные из старой базы данных MS Access в файл CSV, а затем, после некоторой очистки данных, их обработки и т. Д., Я импортирую данные в базу данных MySQL на Linux.

Я собираюсь использовать pyodbc для подключения к базе данных MS Access. Я буду запускать начальный сценарий в среде Windows.

В базе данных IIRC более полумиллиона строк данных. Мои вопросы:

  1. Является ли количество записей причиной для беспокойства? (т. е. попаду ли я в некоторые пределы)?
  2. Есть ли лучший формат файла для временных данных (вместо CSV)?

Я выбрал CSv, потому что он довольно простой и понятный (и я новичок в Python) - но Я хотел бы услышать от кого-то, кто, возможно, сделал что-то подобное прежде.

Ответы [ 4 ]

5 голосов
/ 19 октября 2010

Использование памяти для csvfile.reader и csvfile.writer не пропорционально количеству записей, если вы выполняете итерацию правильно и не пытаетесь загрузить весь файл в память.Это одна из причин существования протокола итератора.Точно так же csvfile.writer пишет прямо на диск;это не ограничено доступной памятью.С ними можно обрабатывать любое количество записей без ограничений памяти.

Для простых структур данных подходит CSV.Получить быстрый, инкрементальный доступ к CSV гораздо проще, чем более сложные форматы, такие как XML (совет: pulldom мучительно медленен).

3 голосов
/ 19 октября 2010

Еще один подход, если у вас есть доступ ...

Создайте таблицу в MySQL для хранения данных.

В вашей базе данных Access создайте ссылку ODBC на таблицу MySQL.

Затем выполните запрос, например:

INSERT INTO MySqlTable (field1, field2, field3)
SELECT field1, field2, field3
FROM AccessTable;

Примечание : Это предложение предполагает, что вы можете выполнить операции очистки данных в Access перед отправкой данных в MySQL.

1 голос
/ 19 октября 2010

Я бы не стал использовать промежуточный формат.Извлечение из Access через ADO и вставка прямо в MySQL действительно не должно быть проблемой.

0 голосов
/ 19 октября 2010

Единственным ограничением должен быть размер файла операционной системы.

Тем не менее, при отправке данных в новую базу данных убедитесь, что вы записываете несколько записей одновременно; Я видел, как люди делали вещи, когда они сначала пытались загрузить весь файл, а затем записали его.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...