使用Pentaho访问PostgreSQL中的非公共模式

时间:2012-10-22 17:41:51

标签: postgresql postgresql-9.1 pentaho

首先让我说,我对Pentaho的了解不会填满一个段落。我对PostgreSQL更了解。我正在与一些承包商合作,这些承包商正在我的公司为Pentaho(第4.5节)建立一套月度报告。某些数据需要通过ETL过程并汇总以用于报告目的。从dba(ish)的角度来看,我想将这些表移动到一个单独的PostgreSQL模式中。

我知道Pentaho经常与MySQL一起使用(没有模式),我担心这可能会导致问题。我做了一些“googlin”,我没有在这个主题上找到很多点击,但我确实找到了一个关闭的bug from a few years ago - 因此暗示应该支持这个功能。

在我这样做之前,我想知道是否有人知道这会失败或是个坏主意的原因。 (或者,如果你已经完成了它,它的效果很好,也请让我知道)。

最后的注意事项:我正在使用PostgreSQL 9.1.5,而且我自己也无法访问Pentaho实例。而且我希望Stackoverflow社区中的优秀人员能够分享他们的专业知识并使我免于安装一个小时的播放/测试以了解这是一个坏主意。

编辑:

我有点知道这个问题有点模糊,但我希望有人会读它并分享他们的经验。所以,让我更清楚地拼出来并提出更多明确的问题。

我没有做任何事情。我不知道Pentaho。我不想学习Pentaho(并不是说Pentaho有什么问题......现在我的兴趣不在其中)。我的公司聘请了承包商(我没有聘请他们)。他们有Pentaho的经验,但有MySQL。他们对PostgreSQL并不了解。 PostgreSQL和MySQL之间有一些重要的区别。包括PostgreSQL支持模式的事实(而MySQL使用单独的数据库......在概念上类似,在某些方面表现不同)。一些ORM(和工具)并不是真的喜欢这个...例如,Django框架仍然没有完全支持Postgresql中的模式(我知道这是因为我经常使用Python和Django而且我的生活是当我把东西放在“公共”模式中时,会好得多。由于我对Django和PostgreSQL模式的经验,我对将这些数据移动到新模式有点怀疑。

我确实知道无论桌子在哪里,他们都需要权限才能访问数据。

我的明确的问题:

  • 您是否使用Pentaho访问PostgreSQL数据库以访问“public”(默认)以外的模式中的表。
  • 如果是这样,它是否正常工作(没问题)?
  • 如果您遇到问题,请愿意与我(以及Stackoverflow社区)分享任何帮助您的在线资源吗?或者你愿意详细说明你在这里记得的东西吗?
  • 你知道任何不能正常工作的事吗?例如,Pentaho中的一个开放式错误与此主题相关。

同样,这不是你的标准问题。我希望有人在那里有经验,并愿意在这里分享它,让我不必花时间设置一个新的Pentaho实例并试图学习Pentaho以便测试它等等。

感谢。

4 个答案:

答案 0 :(得分:2)

您可以采取两种途径:

1)上一篇文章所说的内容(“Pentaho步骤(表输入,输出等)通常允许您指定数据库模式。”)

2)在数据库连接中,高级选项卡,“首选模式名称”。

如果您正在使用不同的模式,则可以为每个模式创建一个数据库连接。使用此方法,您可以将输入/输出步骤中的架构字段留空。

答案 1 :(得分:2)

我们使用MS SQL服务器,我可以告诉你,Pentaho确实很难理解架构。他们的许多应用程序允许您选择一个模式,但Pentaho就像你说的那样,是为了使用类似mySQL的东西而构建的。

让pentaho数据库用户像在mySQL中一样工作。

我们将数据库用户默认为dbo然后我们构建了像dbo.dimDimension这样的表, dbo.factFactTable等。基本上,只使用dbo用于Pentaho目的。 (或者您想要默认的任何模式。)

答案 2 :(得分:2)

我每天都使用PDI和PgSQL,并使用一堆不同的模式。它工作正常。您可能遇到的唯一麻烦是Pg在强制不带引号的标识符而不是大写的情况下的麻烦做法。当我将高级连接属性设置为“在数据库中引用全部”时,我很快就意识到一切都变得更容易了。

是的,如果PDI没有为您执行此操作,则必须在键入SQL时引用所有内容,但它运行良好。没有尝试强制将所有标识符强制为小写,但我希望它也能正常工作。

是的,使用“首选架构nanme”,但请注意,某些步骤使用该选项而其他步骤则不使用。例如,您不能期望它将模式名称添加到您键入表输入步骤的SQL中。

您可能遇到的唯一其他问题是Pg的JDBC驱动程序的限制。它不如SQL Server或DB2那么好,但我唯一遇到的麻烦就是当表输出步骤处于批处理模式时,将表输出步骤中的错误行发送到另一个步骤。

玩得开心学习PDI。它为您的DBA技能提供了很好的补充。

布赖恩

答案 3 :(得分:1)

Pentaho步骤(表输入,输出等)通常允许您指定数据库模式。

我使用PDI和我们的8.4 Postgres实例进行了快速测试,并且能够在不同模式中探索,读取和写入表。

所以,我认为这是一个合理的方向。希望这会有所帮助。