OSX の Automator を使用して、Excel ドキュメントを MySQL データベース テーブルに自動的にアップロードする Perl スクリプトを作成しています。私はすでに関数クエリを書いています:
load data
local infile '/pathToFile/file.csv'
replace into table database.table
fields terminated by ','
enclosed by '"'
lines terminated by '\r'
ignore 1 lines;
\
問題は、キャラクターと競合するため、Perl スクリプトが機能していないことです。私は一種の Perl 初心者なので、この文字を正しくエスケープしてクエリを機能させる方法がわかりません。
私のPerlスクリプト:
#!/usr/bin/perl
# PERL MODULE
use Mysql;
# HTTP HEADER
print "Content-type: text/html \n\n";
# Set Variables
$host = "127.0.0.1";
$database = "database";
$tablename = "plugin_status";
$user = "user";
$pw = "password";
# PERL MySQL Connector
$connect = Mysql->connect($host, $database, $user, $pw);
# Run Query to update table
$myquery = "load data local infile '/pathToFile/file.csv' replace into table database.table fields terminated by ',' enclosed by '"' lines terminated by '\r' ignore 1 lines;";
# EXECUTE THE QUERY FUNCTION
$execute = $connect->query($myquery);
生成されたエラーは次のとおりです。
String found where operator expected at perlfile.pl line 20, near ""load data local infile '/pathToFile/file.csv' replace into table database.table fields terminated by ',' enclosed by '"' lines terminated by '"
(Missing operator before ' lines terminated by '?)
Backslash found where operator expected at perlfile.pl line 20, near "' lines terminated by '\"
(Missing operator before \?)
syntax error at perlfile.pl line 20, near ""load data local infile '/pathToFile/file.csv' replace into table database.table fields terminated by ',' enclosed by '"' lines terminated by '"
Bad name after r' at perlfile.pl line 20.