我即将为客户开始一个PostgreSQL项目。他们希望开发一个包含许多复杂连接的庞大专业数据库,所以在考虑之后我选择了PostgreSQL over MySQL。
一个重要的考虑因素是如何使用脚本有效地与数据库连接。目前,客户端使用大约一百万个脚本来根据需要导入和重塑数据,但不使用数据库(除非您将CSV文件视为数据库)。随着具有查询和视图的数据库结构的到来,对脚本的需求将会减少,但仍需要经常进行导入,以及导出/报告。对我来说,理想的最终结果是一系列标准化脚本,最好是带有Web界面,这样客户端只需单击按钮即可快速无错地执行常规任务。
我的问题是哪种脚本方法最合适。可能任何使用Postgres或ODBC插件的脚本语言就足够了,但我希望从长远来看做出明智的选择。有没有人有这方面的经验? Postgres是否提供内部脚本语言,为此构建GUI是否容易?是否有可用于导入/导出的标准化工具,它们是否可以自定义以允许将任务标准化为单击级别? PHP或perl怎么样?
提前致谢。任何提示,资源,困惑的外表或可怜的手势都将得到真正的赞赏; - )
答案 0 :(得分:3)
我使用Python / Jython连接到PostgreSQL并做各种事情。
加号:
用法示例:
在我关于SO的其他帖子中,您可以看到我将Python / Jython与其他数据库一起用作Oracle和Informix。例如,我创建了从数据库模式转储一些信息的工具,因此我可以轻松地比较测试和生产环境中的数据库。
答案 1 :(得分:2)
由于您正在谈论明确只是操纵数据库的脚本,我将从最原生的工具开始。
COPY FROM
和COPY TO
用于从平面文件导入和导出到平面文件现在,您希望提供一些简单的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)
SchemaCrawler允许您使用JavaScript对数据库进行脚本编写。