从Perl编写SQL文件

时间:2010-12-04 11:33:02

标签: sql perl

我是Perl的新手,具有PHP编码经验,我将这个Perl脚本放在一起读取一个没有EOL字符的相当大的数据文件,并使用INSERT语句创建一个SQL文件。我的问题是在源文件中有“特殊字符”(例如单引号),并且由于这些字符,我最终会得到无效的SQL查询。

我的问题:在构建SQL查询之前有没有办法逃避数据?

这是Perl脚本:

#! /usr/bin/perl
use strict;
use warnings;

my $filename = "foo.dat";
my $buf = "";

open (MYFILE, '>data.sql');

open(my $fh, "<", $filename) or die $!;
while(read($fh, $buf, 80)) {
    if ( defined $buf && length $buf > 2 ) {
        my $aa = substr $buf, 0, 2;
        my $bb = substr $buf, 2, 1;
        my $cc = substr $buf, 3;

        print MYFILE "INSERT INTO foo (aa, bb, cc) VALUES ('".$aa."', '".$bb."', '".$cc."')\n";
    }
}

close (MYFILE);

1 个答案:

答案 0 :(得分:1)

你唯一需要担心的是单引号。您可以将其替换为:

$aa =~ s/'/''/g;

更常用的方法是让数据库库进行编码,例如:

$dbh->quote($thestring);

但是因为你正在写一个文件,所以你似乎没有一个数据库库。