我正在用 Perl 和 DBI 编写小片段(SQLite 耶!)
我想将一些特定的查询记录到与运行查询的表名具有相同文件名的文本文件中。
这是我用来将结果转储到文本文件的代码:
sub dumpResultsToFile {
my ( $query ) = @_;
# Prepare and execute the query
my $sth = $dbh->prepare( $query );
$sth->execute();
# Open the output file
open FILE, ">results.txt" or die "Can't open results output file: $!";
# Dump the formatted results to the file
$sth->dump_results( 80, "\n", ", ", \*FILE );
# Close the output file
close FILE or die "Error closing result file: $!\n";
}
我可以这样称呼它:
dumpResultsToFile ( <<" END_SQL" );
SELECT TADA.fileName, TADA.labelName
FROM TADA
END_SQL
我实际上想要的是,而不是去“results.txt”(上面是硬编码的)的东西,它现在应该去“TADA.txt”。
如果这是表“HAI”和“LOL”之间的连接,则结果集应写入“HAI.LOL.txt”
我所说的甚至可以在 DBI 中使用一些魔法吗?
我宁愿不解析表的 SQL 查询,但如果有一个广泛使用和调试的函数来获取SQL 查询中的源表名称,那对我也有用。
我想要的只是有一个文件名,它给出一些关于它持有什么查询输出的提示。目前,基于表名的隔离似乎是一种不错的方式。