• テーブル作成

create table zipcode (
id int unsigned not null auto_increment,
jiscode varchar(255),
zipcode_old varchar(255),
zipcode varchar(255),
pref_kana varchar(255),
city_kana varchar(255),
street_kana varchar(255),
pref varchar(255),
city varchar(255),
street varchar(255),
flag1 tinyint,
flag2 tinyint,
flag3 tinyint,
flag4 tinyint,
flag5 tinyint,
flag6 tinyint,
primary key (id),
key zipcode (zipcode)
);


ーCSVインポート
LOAD DATA LOCAL INFILE '/root/ken_all_u.csv'
INTO TABLE zipcode
FIELDS
   TERMINATED BY ','
   OPTIONALLY ENCLOSED BY '"'
   ESCAPED BY ''
LINES
   STARTING BY ''
   TERMINATED BY '\r\n'
(
jiscode,
zipcode_old,
zipcode,
pref_kana,
city_kana,
street_kana,
pref,
city,
street,
flag1,
flag2,
flag3,
flag4,
flag5,
flag6
);


  • 確認
select * from zipcode limit 2 \G
show columns from TABLENAME;

ーーーーー
# データを入れるカラムを指定
LOAD DATA LOCAL INFILE '/tmp/import.csv' INTO TABLE table_name FIELDS TERMINATED BY ',' ENCLOSED BY '"' (column1, column2)
# TERMINATED BY 区切り文字
# ENCLOSED BY 囲み文字
LOAD DATA LOCAL INFILE '/tmp/import.csv' INTO TABLE table_name FIELDS TERMINATED BY ',' ENCLOSED BY '"'





ーーーーーーー
#usage
my @base = qw{( $a + $b ) * ( $c + $d )};
my @infix = @base;
 
my @postfix = &get_postfix(@infix);
foreach my $shiki(@postfix){                                                                    
        my $outshiki = $shiki." ";                                                              
        print $outshiki;                                                                        
}
 
 
my $result = ref(@postfix[2]);                                                                  
print "$result\n";                                                                              
print "RESULT: "."@postfix\n";
 
sub get_postfix {
    my @infix = @_;
    my (@postfix, $factor ,$term, $expression);
 
    $factor = sub {
        if ($infix[0] eq '(') {
            shift @infix;
            &$expression;
            shift @infix if $infix[0] eq ')';
        } else {
            push @postfix, shift @infix;
        }
 


@animall = (a,b,c);
@animal[$#animal] = d;
print @animal; ###-> a,b,c,d


# 最初に、顧客の住所を全てハッシュ(メモリ上)に取り込む
my %address_datas = ();
open(IN, 'address.csv');
while(<IN>){
    chomp;
    my ($id, $name, $address) = split(/,/, $_, 3);
 
    # (※1)顧客IDをキーとし、対応する名前と住所の配列を保存する
    $address_datas{$id} = [$name, $address];
}
close(IN);
 
# アンケートデータに氏名と住所をマージする
open(OUT, '>result.csv');
open(IN, 'enquate.csv');
 
while(my $line = <IN>){
    chomp($line);
    my ($id, $ans1, $ans2, $ans3) = split(/,/, $line, 4);
 
    # この行にマッチする顧客データを検索する
    my $ref_data = $address_datas{$id};
 
    # 配列の0番目に名前、1番目に住所が入っている (※1を参照)
    my $name    = $ref_data->[0];
    my $address = $ref_data->[1];
 
    # 出力する
    print OUT join(',', $id, $ans1, $ans2, $ans3, $name, $address), "\n";
}
 
close(OUT);
close(IN);
 
PerlによるCSVファイルの高速集計 2 (1/2):CodeZine(コードジン) https://codezine.jp/article/detail/1020
最終更新:2018年05月21日 07:11