如何每行具有多个值

时间:2019-08-09 01:04:23

标签: sqlite perl

我已经使用perl在sqlite上建立了一个数据库,我试图弄清楚如何在每行上添加多个值。

我一直在尝试更改INSERT INTO语句,但是没有成功。

#Here I create the database.
$dbh->do("
    CREATE TABLE probes(
        source CHAR(15) NOT NULL,
        port CHAR(5) NOT NULL,
        PRIMARY KEY(source,port))")
#This is my prepare statement that I think needs to be changed.
my $sth = $dbh->prepare("INSERT INTO probes (source, port) VALUES(?,?)");

例如,我有一个从扫描完成中获取的日志文件,我有一个源IP和端口号。我希望数据库显示

Source:   Port:
127.0.0.1 5678 5839 5938

与其像这样显示:

Source:   Port:
127.0.0.1 5678
127.0.0.1 5839
127.0.0.1 5938

1 个答案:

答案 0 :(得分:2)

您可以像现在一样为每次扫描存储一行,并在准备显示数据时使用分组和聚合为每个源IP获取一行。像这样:

SELECT source, group_concat(port, ' ') AS ports
FROM probes
GROUP BY source;

db<>fiddle example