【问题标题】:How to run and link a .sql file from Perl如何从 Perl 运行和链接 .sql 文件
【发布时间】:2012-10-05 22:15:15
【问题描述】:

我正在寻找一种方法来实现 MySQL 和 Perl 来制作程序。我迷路的地方是我有一个 .sql 文件,它创建了 3 个表供 Perl 程序使用。你好吗:

1) 在 Perl 中执行文件 fileName.sql 来创建表

2) 将这些创建的表链接到 Perl 程序中的可操作变量(例如能够将用户添加到其中一个表的示例)

【问题讨论】:

    标签: mysql perl


    【解决方案1】:

    在 Perl 中执行文件 fileName.sql 以创建表

    通常您会提前设置数据库并使用命令行mysql 客户端或PHPMyAdmin 等GUI 来加载.sql 文件。

    不过,您可以调用 system 来执行前者。

    将这些创建的表链接到 Perl 程序中的可操作变量

    Perl 中对数据库的低级访问通常通过DBI module 处理。

    根据每个表的变量来获取某些内容需要 ORM。 DBIx::Class 是一个受欢迎的选择。

    【讨论】:

      【解决方案2】:

      在 Perl 中,您使用 DBI 数据库接口。在您的情况下,您还将使用 DBD::MySQL 驱动程序之类的东西。

      有很多关于这个主题的帮助(包括这个网站上的很多问题)。

      至于您的 .sql 文件的具体问题,您可以采取几种方法,具体取决于您想要获得的花哨程度:

      • 您可以在编写程序时将命令复制并粘贴到程序中。
      • 您可以执行将运行 .sql 文件的外部程序(例如,使用 system())。
      • 您可以通过编程方式读取 .sql 文件并从您的程序中发送命令。一个模块可以帮助您解决这个问题(我在 CPAN 上找到了 SQL::Script,虽然我没有任何经验,但它看起来很有用)。

      我建议您选择一种方法,尝试一下,并询问您是否有任何具体问题。

      【讨论】:

      • 我现在已经设法将我的程序连接到 MySQL,但我仍在努力让我的 Perl 程序运行 .sql 文件来创建表格。有没有像 DBI->*** 这样的 DBI 命令可以解决问题?
      • 打开 .sql 文件并读入一个数组,然后将该数组形成一个变量发送到 DBI->prepare(***) 会更简单吗?
      • @JamesBrown,如果您的文件在每一行包含一个语句,您可以遍历文件并执行每一行。这是一个示例答案:stackoverflow.com/a/4220824/1584772。或者您可以根据 SQL 语句分隔符(例如分号)拆分文件。这些方法都不是很健壮:它们可以被 cmets、字符串中的分号等破坏。但是,如果您知道文件的内容不会破坏它们,它们就可以了。如果您想要更通用的解决方案,我建议您尝试上面的模块。
      猜你喜欢
      • 1970-01-01
      • 2014-10-28
      • 1970-01-01
      • 1970-01-01
      • 2010-09-20
      • 2018-02-12
      • 1970-01-01
      • 2011-03-18
      • 1970-01-01
      相关资源
      最近更新 更多