TXT TO SQL 変換10
戻る
# SQLファイルを生成
# make_tables.pl
use strict;
my (%t,$n,@fld,@list);
# 設(shè)定データファイルを読む
open(IN,"../txt/tables.txt") or die "Can't open the file tables.txt.\n";
while() {
@fld = split;
last if (/^END/);
if ( /^TABLE/ ) {
$t{table} = $fld[1];
} elsif ( /^LIST/ ) {
chop;
@fld = split(/,/);
$fld[1] =~ s/\s*//;
$fld[2] =~ s/\s*//;
$fld[3] =~ s/\s*//;
push(@{ $t{name} },$fld[1]);
push(@{ $t{type} },$fld[2]);
push(@{ $t{example} },$fld[3]);
}
}
close(IN);
$t{sqlfile} = $t{table} . '.sql';
open(OUT,">../sql/$t{sqlfile}");
print OUT 'DROP TABLE IF EXISTS ';
print OUT $t{table},';',"\n";
print OUT 'CREATE TABLE ';
print OUT $t{table},"\n";
print OUT '(',"\n";
print OUT ' id INT AUTO_INCREMENT,',"\n";
for $n ( 1 .. $#{ $t{name} } ) {
$t{name1} = $t{name}[$n];
$t{type1} = $t{type}[$n];
printf OUT ("\t%-16s ",$t{name1});
print OUT $t{type1},",\n";
}
print OUT ' PRIMARY KEY (id)',"\n";
print OUT ');',"\n\n";
print OUT 'INSERT INTO ';
print OUT $t{table};
$t{name1} = ' (';
for $n ( 1 .. $#{ $t{name} } ) {
if ( $#{ $t{name} } == $n ) {
$t{name1} = $t{name1} . $t{name}[$n];
} else {
$t{name1} = $t{name1} . $t{name}[$n] . ',';
}
}
print OUT $t{name1},') VALUES(';
$t{example1} = '"';
for $n ( 1 .. $#{ $t{example} } ) {
if ( $#{ $t{example} } == $n ) {
$t{example1} = $t{example1} . $t{example}[$n] . '"';
} else {
$t{example1} = $t{example1} . $t{example}[$n] . '","';
}
}
print OUT $t{example1},');';
print OUT "\n";
close(OUT);
print "The output file is ../sql/$t{sqlfile}.\n";
exit;
__END__;
--------------------------------------------------------------------------------
Filename tables.txt
C---+----1----+----2----+----3----+----4----+----5----+----6----+----7
TABLE enq2
C name type example
LIST, id, INT, 1
LIST, time, date, 2007-12-02
LIST, our_refid, INT NOT NULL, 32
LIST, owners_code, char(50) NOT NULL, 33
LIST, hull_noid, INT NOT NULL, 34
LIST, main_name1id, INT NOT NULL, 35
LIST, main_type1id, INT NOT NULL, 36
LIST, main_maker1id, INT NOT NULL, 38
LIST, main_dwg1id, INT NOT NULL, 29
LIST, parts1id, char(200) NOT NULL, 23=34=234
LIST, parts_NUid, char(200) NOT NULL, 1=1=1
LIST, memo, char(200) NOT NULL, A test memo
END
TABLE enq1
C name type example
LIST, id, INT, 1
LIST, time, date, 2007-11-02
LIST, our_refid, INT NOT NULL, 32
LIST, owners_code, char(50) NOT NULL, 33
LIST, hull_noid, INT NOT NULL, 34
LIST, main_name1id, INT NOT NULL, 35
LIST, main_type1id, INT NOT NULL, 36
LIST, main_maker1id, INT NOT NULL, 38
LIST, main_dwg1id, INT NOT NULL, 29
LIST, parts1id, char(200) NOT NULL, 23=34=234
LIST, parts_NUid, char(200) NOT NULL, 1=1=1
LIST, memo, char(200) NOT NULL, A test memo
戻る
攀枝花市|
阿坝县|
万全县|
通城县|
北海市|
汶上县|
日土县|
泸水县|
泽普县|
安吉县|
漾濞|
庆元县|
鱼台县|
贵南县|
泽库县|
通河县|
黑龙江省|
天长市|
天祝|
巴青县|
长泰县|
沾化县|
新密市|
大厂|
慈溪市|
赤峰市|
彰武县|
松桃|
榕江县|
固原市|
介休市|
乌恰县|
景东|
石屏县|
韶关市|
漳平市|
安国市|
曲沃县|
许昌县|
垦利县|
乌拉特中旗|