【发布时间】:2013-08-14 14:31:04
【问题描述】:
我是 teradata 的新手。我在 teradata 上运行了一个 sql 代码,它给了我一个表作为输出。每当我运行此代码时,我希望此表直接填充到 Excel 工作表中。我该怎么做? 谢谢。
【问题讨论】:
我是 teradata 的新手。我在 teradata 上运行了一个 sql 代码,它给了我一个表作为输出。每当我运行此代码时,我希望此表直接填充到 Excel 工作表中。我该怎么做? 谢谢。
【问题讨论】:
最简单的方法是通过 ODBC 从 Excel 运行查询。因此,您在 Excel 中设置了外部数据源。每当您刷新数据时,我们都会针对 Teradata 执行查询。
在 Excel 2010 中,它位于 Data、From Other Sources、From Microsoft Query 或来自 Data Connection Wizard(如果您有 OLEDB 设置)。
【讨论】:
使用excel本身的ODBC连接是一次性使用的最快方式。
如果您计划多次运行可以从另一种语言运行的东西,它会增加一个步骤,但如果您希望安排定期运行的任务,那么这是非常值得的。 这是python中的一些代码:
import pyodbc as pc
conn = pc.connect('DRIVER={Teradata};DBCNAME=dbname;UID=username;PWD=password;QUIETMODE=YES;')
curs = conn.cursor()
rows = curs.execute("""
select *
from table
;""").fetchall()
f = open('myfile1.csv', 'w')
for row in rows:
s = [str(x) for x in row]
f.write(','.join(s) + '\n')
print ','.join(s) + '\n'
f.close()
用于打开 .csv 文件的默认程序是 excel。
如果您明确需要它是一个 excel 文件,您可以使用 xlwt 模块或让 python 执行 vba 代码以导入现有文件:
import win32com.client
import xl
excel = win32com.client.Dispatch("Excel.Application")
f = xl.Workbook("C:\...\Target.xlsm")
excel.Run("%s!testmacro"%f)
即时报告!
【讨论】:
Teradata SQL 助手能够自动将结果导出到 csv,Excel 通常是打开 csv 的默认程序。
您需要从 SQL 助手的“文件”菜单下选择“导出结果”。
如果没有正确导出,请选择工具->选项->导出/导入并将分隔符更改为逗号。
不幸的是,在 SQL 助手中无法自动保存为 xls 或 xlsx。
【讨论】: