Python Выходной коннектор Snowflake в CSV - PullRequest
0 голосов
/ 28 мая 2020

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

query = '''SELECT TOP 10 * FROM TABLE;'''

conn = snowflake.connector.connect(user='XXXX',
                                   password='XXXX',
                                   account='XXXX')

query_output = conn.cursor().execute(query)

Есть ли способ распечатать вывод запроса, например, print(query_output), а затем также записать его в csv, например query_output.to_csv(path)?

Ответы [ 3 ]

1 голос
/ 28 мая 2020
You can do like below :
---------------------------------------------------------------

import csv
.....
.....
.....
rows=cur.fetchall()
column_names = [i[0] for i in cur.description]
fp = open('samplefile.csv', 'w')
myFile = csv.writer(fp, lineterminator = '\n')
myFile.writerow(column_names)
myFile.writerows(rows)
fp.close()
.....
.....
1 голос
/ 29 мая 2020

Я настоятельно рекомендую использовать Pandas 'DataFrames API. Помимо нескольких других возможностей преобразования и анализа данных, он имеет отличную реализацию CSV для чтения и записи, которая очень гибкая .

Snowflake Python Connector также изначально поддерживает преобразование результаты как Pandas объекты DataFrame.

Ниже приведен очень простой адаптированный пример (1 добавленная строка):

query = '''SELECT TOP 10 * FROM TABLE;'''

conn = snowflake.connector.connect(user='XXXX',
                                   password='XXXX',
                                   account='XXXX')

query_output = conn.cursor().execute(query)

## You may have to run: pip3 install --user pandas ##

query_output.fetch_pandas_all().to_csv("/path/to/write/table.csv")

Форматирование CSV по умолчанию использует , в качестве разделителя, Специфичные для ОС c новые строки (\n за исключением Windows, в котором используется \r\n) и минимальные кавычки (автоматически заключаются в кавычки VARCHAR столбцы, содержащие в себе символы-разделители).

0 голосов
/ 28 мая 2020

Вы можете использовать это для печати результатов. Чтобы сохранить его в CSV, просто сохраните результаты в кадре данных, используя для l oop, а затем используйте df.to_csv

    cursor.execute(query)
    sql_result = cursor.fetchall()
    print(sql_result)     ## just print the results or use the for loop below to print the results row by row 
    for row in sql_result:
        print(row)
...