代码之家  ›  专栏  ›  技术社区  ›  littlegreen

使用哪种语言编写PostgreSQL脚本?[关闭]

  •  7
  • littlegreen  · 技术社区  · 15 年前

    我将为一个客户启动PostgreSQL项目。他们想开发一个具有许多复杂连接的大型专业数据库,因此在考虑之后,我选择了 PostgreSQL over MySQL .

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

    我的问题是哪种脚本方法最合适。也许任何带有Postgres或ODBC插件的脚本语言都足够了,但我正在寻找一个长期明智的选择。有人对此有经验吗?Postgres是否提供了一种内部脚本语言,并且很容易为此构建一个GUI?是否有标准化工具可用于导入/导出,并且这些工具是否可自定义到允许任务的标准化单击级别?PHP或Perl怎么样?

    事先谢谢。任何小贴士、资源、迷惑不解的表情或可怜的手势都会得到真正的欣赏;—)

    4 回复  |  直到 15 年前
        1
  •  2
  •   cope360    15 年前

    因为您所说的脚本只是明确地操作数据库,所以我将从大多数本地工具开始。

    • 用于操作和处理数据的SQL和PL/PGSQL存储函数
    • COPY FROM COPY TO 用于从平面文件导入和导出平面文件
    • 一个ETL工具,用于任何不能用上述方法处理的整形

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

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

        2
  •  3
  •   Michał Niklas    15 年前

    我使用python/jython连接到PostgreSQL并执行各种操作。

    优点:

    • pl/python 所以您可以使用PostgreSQL中的python
    • 您可以使用 Python DB API doc 关于数据库编程,以及 PostgreSQL 细节上
    • 如果您喜欢JVM环境,特别是JDBC驱动程序,可以使用Jython。

    用法示例:

    • 将保存在blobs中的pdf、ms-word和oopenoffice文档转换为文本以编制索引
    • 从各种源导入数据,不仅是cvs;python在转换文本数据方面非常强大
    • 测试驱动程序,而我们的一些应用程序是本机的,使用ODBC或JDBC驱动程序,Jython可以同时使用这两个驱动程序(对于ODBC,有JDBC-ODBC桥)

    在上的其他文章中,您可以看到我将python/jython与其他数据库(如Oracle和Informix)结合使用。例如,我创建了一些工具,从数据库模式中转储一些信息,这样我就可以轻松地比较测试和生产环境中的数据库。

        3
  •  1
  •   Evan Carroll    15 年前

    我使用Perl。我也建议这样做。至于Postgres提供的数据库脚本语言: pl/perl 远比 pl/php pl/perlu 将CPAN带到Postgres。

    你仍然有 pl/sql (对小东西很好),以及 pl/pgsql (也有它的应用程序)。

    不幸的是,Postgres上的csv支持有点粗糙,我将很快启动一个Perl项目来解决这个问题(可能在下个月内)。目前,您几乎必须使用pgloader,它(imho)有一个蹩脚的语法。珀尔有 Text::CSV_XS ,这是处理CSV的godsend。

    Perl在历史上做过数据库访问,并且比PHP使用得更好。我仍然相信这是一个好的方法领先于PHP。PHP仍然缺乏异步框架,并且仅限于Web。PHP的优点往往更集中于语言的非技术特性,即学习曲线和共享主机可移植性。

        4
  •  1
  •   Sualeh Fatehi    15 年前

    SchemaCrawler 对于PostgreSQL,您可以使用JavaScript针对数据库编写脚本。