Я полный новичок Perl с опытом программирования PHP, и я собрал этот скрипт Perl для чтения довольно большого файла данных без символов EOL и создания SQL-файла с инструкциями INSERT. Моя проблема заключается в том, что в исходном файле есть «специальные символы» (например, одна кавычка), и из-за этих символов я заканчиваю недопустимыми SQL-запросами.Написание файла SQL из Perl
Мой вопрос: есть ли способ избежать данных перед созданием 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);
Возможно, было бы проще (и более безопасно) писать непосредственно в БД, а затем выполнить резервное копирование базы данных в файл, если вы хотите сохранить его содержимое. – Ether 2010-12-06 18:28:02