mysql - 不访问数据库的 Perl DBI

标签 mysql sql database perl dbi

我正在为一个尚不存在的数据库创建一组 SQL INSERT 语句,并将它们保存到文件中。

如何在不访问特定数据库的情况下使用 Perl 强大的 DBI 模块来创建这些 INSERT 语句。特别是,使用 $dbh->quote() 函数似乎需要我实例化 $dbh 并连接到数据库。

最佳答案

不幸的是,实际的 quote() 行为并不总是可移植的特性,因此每个驱动程序都会以不同的方式执行它们。除非连接到驱动程序,否则您不知道在实践中使用哪种引用格式。 (有一个模块可以在没有连接的情况下执行此操作,DBIx::Abstract,但它不是特别最新。)。

quote() 方法实际上是由相应的驱动类实现的,在DBD::* 命名空间中。您可能尝试加载您需要的驱动程序并直接调用该函数(请参阅 http://search.cpan.org/~timb/DBI-1.616/lib/DBI/DBD.pm#Writing_DBD::Driver::db::quote ),但这感觉很糟糕。

我仍然会建立一个 DBI 连接,如果只是为了让您获得正确的引用格式。您实际上不需要向它发送任何语句,但您确实知道引用格式对于您将使用的数据库是正确的。

关于mysql - 不访问数据库的 Perl DBI,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6670102/

相关文章:

java - 使用 JPA 和 Hibernate 将 Java boolean 值映射到 Oracle Number 列

mysql - 日期时间字段的 bool 值

mysql - 无法连接到docker容器中的MySQL数据库

mysql - MySQL中的tinyint(M)有什么用处?

sql - 在 SQL Server Management Studio 中执行 NHibernate 生成的预处理语句

sql - 通用 SQL 查询监听器

sql - MySQL - 在两列上为 ON DUPLICATE KEY 创建 UNIQUE 索引

MYSQL CASE WHEN UPDATE 查询

python - 使用多个线程对超过 3 亿行的 Mysql 表执行 Select 查询(未命中索引)?

java - SQLite 无法在 OnCreate 方法中创建数据库。 E/SQLiteLog : (1)