使用哪种语言编写PostgreSQL脚本?

时间:2010-01-30 13:44:32

标签: sql database postgresql scripting import

我即将为客户开始一个PostgreSQL项目。他们希望开发一个包含许多复杂连接的庞大专业数据库,所以在考虑之后我选择了PostgreSQL over MySQL

一个重要的考虑因素是如何使用脚本有效地与数据库连接。目前,客户端使用大约一百万个脚本来根据需要导入和重塑数据,但不使用数据库(除非您将CSV文件视为数据库)。随着具有查询和视图的数据库结构的到来,对脚本的需求将会减少,但仍需要经常进行导入,以及导出/报告。对我来说,理想的最终结果是一系列标准化脚本,最好是带有Web界面,这样客户端只需单击按钮即可快速无错地执行常规任务。

我的问题是哪种脚本方法最合适。可能任何使用Postgres或ODBC插件的脚本语言就足够了,但我希望从长远来看做出明智的选择。有没有人有这方面的经验? Postgres是否提供内部脚本语言,为此构建GUI是否容易?是否有可用于导入/导出的标准化工具,它们是否可以自定义以允许将任务标准化为单击级别? PHP或perl怎么样?

提前致谢。任何提示,资源,困惑的外表或可怜的手势都将得到真正的赞赏; - )

4 个答案:

答案 0 :(得分:3)

我使用Python / Jython连接到PostgreSQL并做各种事情。

加号:

  • pl/python所以你可以使用PostgreSQL中的Python
  • 您可以使用Python DB API创建“独立”程序,doc关于数据库编程,PostgreSQL详细信息
  • 如果您喜欢JVM环境,尤其是JDBC驱动程序
  • ,则可以使用Jython

用法示例:

  • 将保存在BLOB中的PDF,MS Word和OopenOffice文档转换为文本以将其编入索引
  • 从各种来源导入数据,不仅仅是cvs; Python在转换文本数据方面非常强大
  • 测试驱动程序,而我们的一些应用程序是本机的,使用ODBC或JDBC驱动程序,Jython可以使用两个驱动程序(对于ODBC,有JDBC-ODBC桥)

在我关于SO的其他帖子中,您可以看到我将Python / Jython与其他数据库一起用作Oracle和Informix。例如,我创建了从数据库模式转储一些信息的工具,因此我可以轻松地比较测试和生产环境中的数据库。

答案 1 :(得分:2)

由于您正在谈论明确只是操纵数据库的脚本,我将从最原生的工具开始。

  • 用于操作和处理数据的SQL和PL / pgSQL存储函数
  • COPY FROMCOPY TO用于从平面文件导入和导出到平面文件
  • 用于任何无法使用上述
  • 处理的重塑的ETL工具

现在,您希望提供一些简单的Web界面来与这些脚本进行交互。这里最好的语言可能是您或您的团队已经知道的语言。所有主要语言都有Postgres驱动程序。如果将数据操作任务保留在数据库层,则所选语言的影响非常小。

要考虑的一件事是典型脚本执行需要多长时间。如果超过几分钟,那么我建议将它与Web界面分离。在这种情况下,Web界面应该允许用户将脚本排队以启动,以便服务器可以独立于Web请求周期运行它。

答案 2 :(得分:1)

我使用Perl。我也会建议。至于postgres提供的数据库脚本语言:pl/perl远比pl/php更发达,pl/perlu将CPAN带到Postgres。

你仍然有pl/sql(非常适合小东西)和pl/pgsql(也有应用程序)。

不幸的是,对Postgres的CSV支持有点苛刻,我很快就要开始一个Perl项目来解决这个问题(可能在下个月内)。目前,你几乎必须使用pgloader,其中(imho)具有kludgey语法。 Perl有Text::CSV_XS,这是处理CSV的天赐之物。

Perl历史上已经完成了数据库访问并且使用得比PHP好得多。我仍然认为这是一个领先于PHP的好方法。 PHP仍缺少异步框架,而且仅限于Web。 PHP的优势往往更多地集中在语言的非技术特性上,即学习曲线和共享主机可移植性。

答案 3 :(得分:1)

PostgreSQL的

SchemaCrawler允许您使用JavaScript对数据库进行脚本编写。