Skip to content

Instantly share code, notes, and snippets.

@klopp
Last active July 7, 2016 17:26
Show Gist options
  • Save klopp/adf89222b281c10a9fed5ba0af88de88 to your computer and use it in GitHub Desktop.
Save klopp/adf89222b281c10a9fed5ba0af88de88 to your computer and use it in GitHub Desktop.
Тестовое задание (Яндекс, 11 мая 2016)
#!/usr/bin/perl
# ------------------------------------------------------------------------------
# Напишите программу на Perl, которая получает первым аргументом командной
# строки имя tab-separated файл и записывает его содержимое в таблицу БД.
# Таблица создана таким запросом:
#
# create table banners (
# banner_id int unsigned not null primary key,
# title varchar(200),
# url varchar(4000) );
#
# В файле содержатся строки, состоящие из этих же полей в таком же порядке.
# ------------------------------------------------------------------------------
use Modern::Perl;
use Carp qw/confess/;
use English qw/-no_match_vars/;
use Const::Fast;
const my $DB_HOST => 'localhost';
const my $DB_NAME => 'test';
const my $DB_USER => 'test';
const my $DB_PWD => 'test';
const my $DB_TBL => 'banners';
use DBI;
# ------------------------------------------------------------------------------
confess "Usage: \"$PROGRAM_NAME file\"" unless $ARGV[0];
my $db = DBI->connect( "DBI:mysql:database=$DB_NAME;host=$DB_HOST",
$DB_USER, $DB_PWD )
or confess "DB connection error: $DBI::errstr";
$db->do("LOAD DATA LOCAL INFILE '$ARGV[0]' INTO TABLE `$DB_TBL`");
$db->disconnect();
# ------------------------------------------------------------------------------
# That's All, Folks!
# ------------------------------------------------------------------------------
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment