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

使用哪种语言编写PostgreSQL脚本?,sql,database,postgresql,scripting,import,Sql,Database,Postgresql,Scripting,Import,我即将为一个客户启动一个PostgreSQL项目。他们想开发一个包含许多复杂连接的大型专业数据库,所以经过考虑,我选择了加入 一个重要的考虑因素是如何使用脚本有效地与数据库接口。目前,客户端使用大约一百万个脚本来导入和修改数据以满足他们的需要,但不使用数据库(除非考虑CSV文件是数据库)。随着带有查询和视图的数据库结构的出现,对脚本的需求将减少,但仍然需要经常进行导入,以及导出/报告。对我来说,理想的最终结果是一系列标准化的脚本,最好有一个web界面,这样客户机就可以快速执行常规任务,只需点击按

我即将为一个客户启动一个PostgreSQL项目。他们想开发一个包含许多复杂连接的大型专业数据库,所以经过考虑,我选择了加入

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

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


提前谢谢。任何提示、资源、困惑的表情或可怜的手势都将受到真诚的感谢;-)

既然您所说的脚本只是明确地操作数据库,我将从最原生的工具开始

  • 用于操作和处理数据的SQL和PL/pgSQL存储函数
  • COPY FROM
    COPY TO
    用于从平面文件导入和导出到平面文件
  • 一个ETL工具,用于任何无法用上述方法处理的重塑
现在,您需要提供一些简单的web界面来与这些脚本交互。这里最好的语言可能是您或您的团队已经知道的语言。所有主要语言都有博士后驱动程序。如果您将数据操作任务保持在数据库层,那么您选择的语言将几乎没有影响


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

我使用Perl。我也建议。就postgres提供的数据库脚本语言而言:
pl/perl
远比
pl/php
发达,而
pl/perlu
将CPAN引入postgres

您仍然有
pl/sql
(非常适合小东西),还有
pl/pgsql
(也有它的应用程序)

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


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

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

优点:

  • 有一种方法可以让您使用PostgreSQL中的Python
  • 您可以使用创建“独立”程序,其中有关于数据库编程的详细信息
  • 如果您喜欢JVM环境,特别是JDBC驱动程序,可以使用Jython
用法示例:

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

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

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

它们有Windows server、IIS和SBS。我很想安装它,因为它有大量的内存和多个处理器,尽管我更喜欢一台专用的Unix机器。你知道什么语言?您的日程安排很紧,还是有时间学习新的语言?就脚本语言而言,我只有PHP方面的经验。我也知道C语言,但对我来说这项工作似乎不太实际。我的日程安排中有一些空气,所以我可以学习新的语言,只要学习曲线不太陡峭。我很想学习perl,只要能穿上“perlmonger”衬衫和帽子;)这是可靠的建议。非常感谢。在等待其他见解之前,我倾向于在symphony等框架中使用PHP,使用AJAX进行数据库调用。更新:我现在使用m$SQL Server而不是Postgres已有一段时间了,我发现内部T-SQL函数和SSIS包(ETL)比通过ODBC连接的任何其他脚本语言都要快得多。我倾向于认为博士后也是如此。所以我建议任何人,从内部存储过程开始,然后看看其他脚本编写的可能性。小补充:关于web界面,你也是对的。让web界面调用本机存储过程要比在PHP/ASP/中执行任何脚本编写或操作快得多