Mysql 使用perl将数据库的每一行保存为目录中的单独文本文件?
我有一个数据库表,它保存着各种列和行数据Mysql 使用perl将数据库的每一行保存为目录中的单独文本文件?,mysql,arrays,database,perl,Mysql,Arrays,Database,Perl,我有一个数据库表,它保存着各种列和行数据 我想在其中一列中搜索关键字。该列称为“产品” 我想对表中的每个关键字运行查询,并返回包含该关键字的所有行的结果 每行的结果应打印到一个单独的文件中,每个文件都应将名称作为该行某列(在本例中为item_id)中包含的数据值 我希望在循环中完成此操作,直到在所有“products”列中搜索表中的所有行 我有下面的代码打印到屏幕上,但是所有匹配的行和列都会立即返回到屏幕上,而不是像我希望的那样单独归档(请阅读上面的(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();
!/usr/bin/perl
使用DBI;
@product=qw(橙色苹果)####为产品创建的数组
$count=1;
#连接到数据库
未提供详情
my$dbh=DBI->connect(“DBI:mysql:$db;host=$db\u host”,$mysql\u user,$mysql\u passwd)
||die“错误:连接:$DBI::errstr\n”;
打印“已连接数据库\n”;
foreach$product(@product)
{
#准备要执行的SQL查询
my$sth=$dbh->prepare(fetchrow\u array())
{
打印标准输出(“项目ID:$ITEM\u ID\n产品:$Product\n已发布:
$published Modified:$Modified\n可用性:$Availability\n摘要:$Summary\n
引用:$Reference\n“;};
$count++;
}
#断开与数据库的连接
$dbh->disconnect();
您必须创建一个文件并写入该文件,而不是打印标准输出
open(my$f,“>$item\u id”)或die“无法创建文件$item\u id:$!”!";
打印$f“项目ID:$ITEM\u ID\n产品:$Product\n Published:$Published Modified:$Modified\n Availability:$Availability\n Summary:$Summary\n Reference:$Reference\n”;
结束(f美元);
您打印到的是标准输出,而不是文件。为什么要打印到文件?仅供参考,您应该使用或die
,而不是| die
,因为优先级不同。嗨,奥拉夫,谢谢您的回答-我知道我需要打印到文件,但不确定如何操作,我打印标准输出只是为了向您展示我目前为止的代码。谢谢你的建议很有效。我正在改进这个脚本,我的目标是为以特定格式返回的每一行发送电子邮件,而不是打印到文件,但我想了解脚本的进展阶段>先打印到文件:-)这意味着我在同一个项目上还有其他问题。谢谢Barmar的提示