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);
最終更新:2018年05月21日 07:11