#!/usr/bin/perl if($#ARGV < 0) { exit; } # file name must be TABLENAME.csv @names = split(/\./, $ARGV[0]); @path = split(/\//, $names[$#path-1]); $table = $path[$#path]; open(IN, $ARGV[0]); my $header = ; my $temp = $header; $temp =~ s/(?:\x0D\x0A|[\x0D\x0A])?$/,/; my @fields = map {/^"(.*)"$/ ? scalar($_ = $1, s/""/"/g, $_) : $_} ($temp =~ /("[^"]*(?:""[^"]*)*"|[^,]*),/g); while(my $line = ) { my $tmp = $line; $tmp =~ s/(?:\x0D\x0A|[\x0D\x0A])?$/,/; my @data = map {/^"(.*)"$/ ? scalar($_ = $1, s/""/"/g, $_) : $_} ($tmp =~ /("[^"]*(?:""[^"]*)*"|[^,]*),/g); print "insert into " . $table . " (" . join(", ", @fields) . ") values (" . &join_quot(", ", @data) . ");\n"; } close(IN); sub join_quot { my $delim = shift; my @param = @_; my $i = 0; my $buffer = ""; foreach my $data (@param) { if($i > 0) { $buffer .= $delim; } if(length($data) == 0) { $buffer .= "NULL"; } elsif(uc($data) eq 'TRUE' || uc($data) eq 'FALSE') { $buffer .= $data; } else { $buffer .= "'".$data."'"; } $i++; } return $buffer; }