DBD :: CSV позволяет сопоставить имена таблиц, которые вы используете в своих запросах, с именами файлов. Тот же механизм используется для настройки атрибутов для каждого файла, таких как конец строки, разделитель полей и т. Д., Ищите «csv_tables» в документации DBD :: CSV.
#!/usr/bin/env perl
use warnings;
use strict;
use DBI;
my $dbh = DBI->connect("DBI:CSV:f_dir=/home/mm", { RaiseError => 1 });
$dbh->{csv_tables}->{table_1} = {
'file' => 'test_1.csv',
'eol' => "\n",
};
$dbh->{csv_tables}->{table_2} = {
'file' => 'test_2.csv',
'eol' => "\n",
};
my $sth = $dbh->prepare( "SELECT a.id, a.name, b.city FROM table_1 AS a NATURAL JOIN table_2 AS b" );
$sth->execute();
$sth->dump_results();
$dbh->disconnect();
В моем случае мне пришлось указать символ конца строки, потому что я создал CSV-файлы в vi, чтобы они заканчивались окончаниями строк Unix, тогда как DBD :: CSV предполагает окончания строк DOS / Windows независимо от платформы, в которой находится скрипт бежать дальше.