gpt4 book ai didi

mysql - 使用 perl 将数据库的每一行保存为目录中的单独文本文件?

转载 作者:行者123 更新时间:2023-11-30 00:51:13 26 4
gpt4 key购买 nike

我有一个数据库表,其中包含各种列和行的数据。

  1. 我想在其中一列中搜索关键字。该列称为“产品”。
  2. 我想在表中针对每个关键字运行查询,并返回包含该关键字的所有行的结果。
  3. 每行的结果应打印到单独的文件中,每个文件应将名称作为包含该行的列之一的数据值(在本例中为 item_id)

我希望循环完成此操作,直到在所有“产品”列中搜索表的所有行。

我有以下代码,可以打印到屏幕上,但所有匹配的行和列都会立即返回到屏幕上,即不会按照我的意愿单独归档(请阅读上面的(3))。

另请注意我想要的输出格式,即单独的行等

有人可以帮忙吗?

#!/usr/bin/perl
use DBI;
@product = qw( orange apple); ###an array created for products
$count = 1;

# Connect to the database
details not provided

my $dbh = DBI->connect("DBI:mysql:$db;host=$db_host",$mysql_user, $mysql_passwd)
|| die "ERROR: Connecting: $DBI::errstr\n";
print "db connected\n";

foreach $product(@product)
{

# Prepare the SQL query for execution
my $sth = $dbh->prepare(<<End_SQL)
or die "Couldn't prepare statement: $DBI::errstr; stopped";
SELECT item_id, published, modified, availability, summary,
product, reference FROM $my_table WHERE product LIKE '%$product%'
End_SQL

# Execute the query
$sth->execute() or die "Couldn't execute statement: $DBI::errstr; stopped";

# Fetch each row and print it
while ( my ($item_id, $published, $modified, $availability, $summary, $product,
$reference) = $sth->fetchrow_array() )
{
print STDOUT ("ITEM ID: $item_id\n Product: $product\n Published:
$published Modified:$modified\n Availability: $availability\n Summary: $summary\n
Reference: $reference\n");};


$count++;

}
# Disconnect from the database
$dbh->disconnect();

最佳答案

您必须创建一个文件并写入该文件,而不是打印 STDOUT

open(my $f, ">$item_id") or die "Cannot create file $item_id: $!";
print $f "ITEM ID: $item_id\n Product: $product\n Published: $published Modified:$modified\n Availability: $availability\n Summary: $summary\n Reference: $reference\n";
close($f);

关于mysql - 使用 perl 将数据库的每一行保存为目录中的单独文本文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20951422/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com