0
  1. 我们经常让 Excel 连接到 teradata 数据库并为我们生成的各种报告/模型运行一些 sql。如果我是对的,这将始终按照 Queryman 中运行的标准查询进行连接和“执行”。
  2. 但是,我希望能够告诉它连接并“执行并行”。
  3. 因为我的查询需要大约 2-3 小时才能获取数据,如果我从 excel VBA 运行它,那么我无法在我的 Excel 应用程序上执行任何操作。
  4. 我希望一旦我对 teradata 发起查询,它将并行运行,并且我的 excel 在获取数据所需的时间内也是免费的。

提前致谢!!!

4

2 回答 2

1

这是建立2个独立的连接,并一个一个地执行:

Set objmyconn = New ADODB.Connection
Set objmyconn2 = New ADODB.Connection


objmyconn.Open "Driver={Teradata};DBCName=DB1;Database=DB1;Uid=LUSER1;Pwd=LPWD1;"
objmyconn2.Open "Driver={Teradata};DBCName=DB1;Database=DB1;Uid=LUSR2;Pwd=LPWD2;"

Set RS = objmyconn.Execute("SELECT USER")

While Not RS.EOF
  MsgBox (RS.Fields(0).Value)
  RS.MoveNext
Wend

Set RS2 = objmyconn2.Execute("SELECT USER")

While Not RS2.EOF
  MsgBox (RS2.Fields(0).Value)
  RS2.MoveNext
Wend


objmyconn.Close
objmyconn2.Close

对于并行处理,您需要将上述代码拆分为两个不同的 proc 并安装并行处理 Excel 插件;这样您的两个 Teradata 连接将同时执行。

或者更好 - 通过 2 个并行 VBS 文件执行这些调用,而不是试图征服 Excel。

于 2016-02-12T03:54:28.837 回答
0

我可以先说 2 到 3 个小时是很长的时间!

我只能建议一件事,因为您没有任何代码可以继续,而且我不熟悉连接类型:

Excel 可以打开多个应用程序实例,这与当前打开的工作簿中的新工作簿完全不同。

有几种检查方法,主要是您无法链接到另一个 excel 实例中的单元格,我经常在尝试vlookup在不同实例中的工作簿之间执行此操作时遇到此问题。此外,如果您按<ctrl> + <c>循环浏览您的当前实例中的工作簿,其他 excel 实例不会显示。

您可以通过右键单击任务栏上的 excel 并打开一个新的 excel 来打开一个新实例。如果成功,打开excel就没有问题了。

顺便说一句,我将异步连接到 oracle 并使用一个循环来检查连接状态并添加Do Events函数以使 excel 继续工作。

于 2013-02-26T11:31:48.117 回答