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

标签 mysql arrays database perl

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

  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/

相关文章:

php-sql where 用于选择日期范围的选项

java - JPA在MySQL数据库中保存错误的日期

ios - 用于遍历数组中的属性

java - 无法使用 datastax java 驱动程序通过 UDT key 从 cassandra 检索

mysql - 如何提高大表中的插入时间?

Java:resultSet.getTimestamp 丢失时间

mysql - 有没有办法改进这个sql select功能?

java - 在随机位置用固定数量的宝藏填充二维字符数组

javascript - 数组中元素的奇数个

php - 使用mysql使用另一列获取唯一ID