2010-12-04 3 views
0

나는 PHP 코딩 경험을 가진 Perl의 완전한 초보자이며,이 Perl 스크립트를 함께 사용하여 EOL 문자없이 상당히 큰 데이터 파일을 읽고 INSERT 문으로 SQL 파일을 작성한다. 내 문제는 소스 파일에 "특수 문자"(예 : 작은 따옴표)가 있고 그 문자 때문에 잘못된 SQL 쿼리로 끝납니다.Perl에서 SQL 파일 작성하기

내 질문 : SQL 쿼리를 작성하기 전에 데이터를 벗어날 수있는 방법이 있습니까?

#! /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); 
+0

DB에 직접 쓰는 것이 더 쉬울 (그리고 더 안전 할 것입니다.) 그리고 그 내용을 보존하고 싶다면 파일에 DB 덤프를 수행하십시오. – Ether

답변

1

당신이 걱정해야 할 것이다 유일한 문자는 작은 따옴표입니다 :

다음은 펄 스크립트입니다. 당신은 좋아하는 대체 할 수

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

더 일반적인 방법으로는 같은 인코딩을 수행 할 데이터베이스 라이브러리를 요청하는 것입니다 :

$dbh->quote($thestring); 

하지만 파일에 기록하고 있기 때문에, 당신은 돈 ' 주위에 데이터베이스 라이브러리가있는 것 같습니다.

+0

도와 주셔서 감사합니다! – ecstrim

관련 문제