为什么外部表在netezza中不起作用?

时间:2016-06-17 15:50:42

标签: netezza

我正在使用服务器A上的Netezza Emulator。我在外部表上运行查询时遇到问题。

我在服务器B上有一个名为test.txt的文本文件。我有Netezza odbc连接器,其中包含以下版本参数:

    Driver version          : 'Release 7.2.0.0 [Build 40845]'
    NPS version             : '07.02.0001 Release 7.2.1.0 [Build 46322]'
    Database                : <sanitized>

当我尝试在服务器B上运行此查询时:

CREATE EXTERNAL TABLE testtable (   COL1 INTEGER ) USING (  DATAOBJECT('/var/tmp/test.txt')     DELIMITER 30    NULLVALUE 'N'   ESCAPECHAR '\'  TIMESTYLE '24HOUR'  BOOLSTYLE 'T_F'     CTRLCHARS TRUE  LOGDIR '/data/data/HAGDEMO/temp/'   Y2BASE 2000     ENCODING 'INTERNAL'     REMOTESOURCE 'ODBC' );

每次响应都在那里。 但是,如果我执行查询:

SELECT * FROM testtable;

它有50%的时间有效。前50%是正常的。另外50%导致挂起。没有错误,没有响应,甚至没有返回光标。只是一个悬念。

跟踪pg.log文件时,我看到没有错误。或任何会出现问题的东西。它承认了这个问题并且在这一天继续,好像它是啤酒的时间。

我应该工作吗?这是初始管理员登录,所以我知道所有权限都在那里。

我错过了什么? 感谢

更新#1: 运行查询时,查询会照常显示在会话管理器中,然后挂起。当我将查询升级到临界状态时,它会立即执行。这是什么原因?我不想每次都必须手动更新odbc上的优先级。感谢。

1 个答案:

答案 0 :(得分:0)

您的问题是,默认情况下,外部表可以从主机(服务器A)中看到。

除非从主机上看到 /var/tmp/test.txt ,否则它无法指定 RemoteSource ODBC 选项,即便如此,提交选择SQL的客户端也必须在服务器B上运行(即它必须能够看到 /var/tmp/test.txt )。

要测试/证明这一点,请将文件移至服务器A上的 / var / tmp ,然后重试。当当!你很受欢迎.....