正确解析 CSV 是一件非常棘手的事情。大多数困难来自解析内容中的引号、双引号、逗号、空格等错误。
我建议不要重新发明轮子,而是使用一些经过良好测试的库。我认为 awk 没有,但 Perl 有:DBD::CSV
.
在 Windows 上,只需安装ActivePerl,它已经DBD::CSV
默认安装。
while
然后,使用这样的 Perl 代码检索数据并在循环内转换为其他格式:
use DBI;
my $dbh = DBI->connect("dbi:CSV:f_ext=.csv") or die $DBI::errstr;
my $sth = $dbh->prepare("SELECT * FROM mytable"); # access mytable.csv
$sth->execute();
while (my @row = $sth->fetchrow_array()) {
print "id: $row[0], name: $row[1]\n";
}
# you can also access columns by name, like this:
# while (my $row = $sth->fetchrow_hashref()) {
# print "id: $row->{id}, name: $row->{name}\n";
# }
$sth->finish();
$dbh->disconnect();
由于您提到您有 2 个输入 CSV 文件,您甚至可以使用 SQL 连接语句从两个表中同时获取正确连接的数据。