Я пытаюсь использовать запрос базы данных для вывода запроса на печать в CSV, но не может выводить вывод на отдельные строки. Как это сделать?Запись из базы данных с использованием Perl Text :: CSV
Вот код:
use warnings;
use DBI;
use strict;
use Text::CSV;
#set up file
my $csv = Text::CSV->new ({ binary => 1 }) # should set binary attribute.
or die "Cannot use CSV: ".Text::CSV->error_diag();
open my $fh, ">:encoding(utf8)", "new.csv" or die "new.csv: $!";
#set up query
my $dbh = DBI->connect("DBI:mysql:db", "name") or die ("Error: $DBI::errstr");
my $sql = qq(select * from one_table join two_table using (primary_key));
my $query = $dbh->prepare($sql);
$query->execute;
#loop through returned rows of query and save each row as an array
while (my (@row) = $query->fetchrow_array) {
#print each row to the csv file
$csv->print ($fh, [@row]);
# every line seems to be appended to same line in "new.csv"
# tried adding "\n" to no avail
}
close $fh or die "new.csv: $!";
Это должно быть общее использование дело, но не смогли найти ничего о проблемах с новыми линиями.
Вы используете '()' 'внутри QQ()', что довольно странно (но, кажется, работает по какой-то причине!), А не с запятой на конце линии , что должно привести к синтаксической ошибке. Вы никогда не должны по какой-либо причине пытаться ввести свой исходный код в вопрос: всегда вырезать и вставлять. – TLP
с запятой добавлено! Кодекс должен был быть анонимным/обобщенным, чтобы иметь смысл. Резка и вставка фактического кода не сработала бы. В северном направлении скобки в выражениях MySQL, ограниченные или не ограниченные qq(), всегда работают для меня! – user1849286
С 'qq()' (и многие другие perl-операторы, такие как 'm //', 's ///', 'qr //' и т. Д.), Вы можете изменить круглые скобки почти на любой другой символ пунктуации. Это уменьшает необходимость в escape-символах, таких как 'm/\/usr \/bin \ //' может быть 'm #/usr/bin/#'. Но в этом случае кажется, что 'qq()' может обрабатывать круглые скобки * внутри *, только до тех пор, пока они сбалансированы. Я не знал этого. Один из тех крайних случаев, которые я не уверен, действительно полезен, но интересный кусочек мелочей. :) – TLP