Написание файла SQL из Perl - PullRequest
       0

Написание файла SQL из Perl

0 голосов
/ 04 декабря 2010

Я - новичок в Perl, с опытом программирования на PHP, и я собрал этот скрипт на Perl для чтения довольно большого файла данных без символов EOL и создания файла SQL с операторами INSERT.Моя проблема в том, что в исходном файле есть «специальные символы» (например, одинарные кавычки), и из-за этих символов у меня возникают недопустимые запросы 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 Ответ

1 голос
/ 04 декабря 2010

Единственный символ, о котором вам нужно беспокоиться, это одиночная кавычка. Вы можете заменить его следующим образом:

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

Более обычный способ - попросить библиотеку базы данных выполнить кодировку, например:

$dbh->quote($thestring);

Но поскольку вы пишете в файл, у вас, похоже, нет библиотеки базы данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...