Сохранить WRDS SQL-запрос в файл на Python - PullRequest
0 голосов
/ 04 июля 2018

Мой код:

import wrds
db = wrds.Connection() 
compustatq = db.raw_sql("""
              select *
              from comp.fundq 
              """)

compustatq.to_csv('path.csv',index=False)

Проблема в том, что набор данных настолько велик, что у меня не хватает оперативной памяти. Поэтому я думал, можно ли загрузить / сохранить данные непосредственно на диске? Следовательно, избегая двухэтапной процедуры загрузки в фрейм данных и последующего экспорта в CSV-файл.

1 Ответ

0 голосов
/ 05 июля 2018

вы можете использовать библиотеку csv, чтобы сделать это. это встроенная библиотека Python. Я не знаю, какой у тебя тип compustatq. но найдите способ прочитать его в каждой строке.

используйте это так:

import csv

writer = csv.writer(open('path.csv', 'wb+'), dialect='excel')
for row in compustatq:
    writer.writerow([str(v) for v in row])

ref: csv


Я только что прочитал исходный код wrds.Connection.raw_sql. он говорит, что ваш compustatq является экземпляром pandas.DataFrame. Таким образом, вы все еще можете использовать метод to_csv, но немного по-другому:

f = open('path.csv', 'wb+')
for i in xrange(len(compustatq)):
    f.write(df[i:i+1].to_csv(header=i==0))
f.close()
...