只是想知道实现的最佳实践是什么:
我们有在 SQL Server 中运行的存储过程,需要对存储在 Netezza 上的巨大事实表进行一些计算。
流量:
- 存储过程将在 SQL Server 上创建临时表
- 这些将被发送到 Netezza 以加入事实表
- 将在 Netezza 中进行计算
- 结果将传回 SQL Server
将临时表从 SQL Server 传递到 Netezza 的方法有哪些?
谢谢
只是想知道实现的最佳实践是什么:
我们有在 SQL Server 中运行的存储过程,需要对存储在 Netezza 上的巨大事实表进行一些计算。
流量:
将临时表从 SQL Server 传递到 Netezza 的方法有哪些?
谢谢
我所知道的将数据输入和输出 Netezza 的唯一方法是通过平面文件,或者使用 ODBC 驱动程序直接与 Netezza 一起工作并在内存中保存一个记录集并通过 odbc 连接写入 Netezza。
无论您使用的是 Windows 还是 Unix,Netezza 都附带了可用于连接到 Netezza 的客户端工具。仅供参考,不要费心在互联网上寻找它们。您必须直接从 Netezza 或从管理该关系的人那里获得它们。
我建议研究如何使用 SSIS 中的 ODBC 驱动器为您完成工作。我不是 SSIS 的专业人士,所以我不能说我知道该怎么做,但我会先研究一下。
如果我必须完成任务,我会用 C# 编写一些东西来执行以下任务。
现在我考虑一下,您也可以尝试以下方法,但是它未经测试。我想知道您是否可以在 sql server 中创建一个链接表,并在 Netezza 中创建一个使用相同平面文件的外部表。保留文件锁,如果可以的话,您可以从 sql server 创建到 netezza 的准链接。
要了解有关 netezza 中的外部表的更多信息。查看第 5 章中的文档 Netezza 用户指南。
此外,如果您对编码方面感兴趣,下面有一个非常好的链接,可以说明如何通过 c# 连接到 netezza。
我最终使用该帖子中的一些内容构建了以下方法来针对 Netezza 执行命令。
OdbcDataReader GetReaderForCommand(string strCmd, string dbname)
{
var conn = new OdbcConnection();
conn.ConnectionString = "Driver={NetezzaSQL};servername=<servername>;port=5480;database="+dbname+"; username=<username>;password=<pwd>;";
OdbcDataReader rdr = null;
conn.Open();
System.Data.Odbc.OdbcCommand cmd = new System.Data.Odbc.OdbcCommand(strCmd, conn);
rdr = cmd.ExecuteReader();
return rdr;
}
最后,这里有几个我会跟进的链接。
enzeecommunity.com - 搜索和提问的用户群。
与 Netezza 一起使用的免费管理工作室。
http://www.aginity.com/ProductivityTools/WorkbenchOverview.aspx -