У меня проблемы с запросом таблицы> 5 миллионов записей из базы данных MS SQL Server. Я хочу выбрать все записи, но мой код, похоже, дает сбой при выборе большого количества данных в памяти.
Это работает:
import pandas.io.sql as psql
sql = "SELECT TOP 1000000 * FROM MyTable"
data = psql.read_frame(sql, cnxn)
... но это не работает:
sql = "SELECT TOP 2000000 * FROM MyTable"
data = psql.read_frame(sql, cnxn)
Возвращает эту ошибку:
File "inference.pyx", line 931, in pandas.lib.to_object_array_tuples
(pandas\lib.c:42733) Memory Error
Я прочитал здесь, что похожая проблема существует при создании dataframe
из файла CSV, и что обходной путь должен использовать параметры 'iterator' и 'chunksize', подобные этим:
read_csv('exp4326.csv', iterator=True, chunksize=1000)
Есть ли подобное решение для запросов из базы данных SQL? Если нет, какой предпочтительный обходной путь? Должен ли я использовать некоторые другие методы для чтения записей в кусках? Я прочитал немного обсуждения здесь о работе с большими наборами данных в пандах, но кажется, что для выполнения запроса SELECT * требуется много работы. Конечно, есть более простой подход.