0

infobright プロンプトで実行すると、クエリは問題なく実行されます。

mysql> LOAD DATA INFILE '/tmp/test.agg' IGNORE INTO TABLE tb_message_content FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '\"' ESCAPED BY '\\'LINES TERMINATED BY '\n';
Query OK, 2 rows affected

ただし、同じクエリをシェル スクリプトから実行するとエラーが発生します。これは、スクリプトがクエリを解釈する方法です。

mysql -u amr_ts_scripts -pamr_ts_scripts MVR4_ETL_DB -S /tmp/mysql-ib.sock -N -e 
$'LOAD DATA INFILE \'/tmp/test.agg\'
 IGNORE INTO TABLE tb_message_content \n      
 FIELDS TERMINATED BY \',\' \n             
 OPTIONALLY ENCLOSED BY \'"\' \n             
 ESCAPED BY \'\\\'\n      
 LINES TERMINATED BY \'\\n\';'

引用されたエラーは次のとおりです。

ERROR 1064 (42000) at line 1: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''\'
      LINES TERMINATED BY ''' at line 4
PAGER set to stdout

誰でも私が直面している問題を指摘できますか??

4

1 に答える 1

0
stmt="LOAD DATA INFILE '$1' IGNORE INTO TABLE $2 FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '\"' ESCAPED BY '\\\\' LINES TERMINATED BY '\n';

各「\」をエスケープするには ESCAPED BY '\\' が必要なため、スクリプト内の上記のステートメントは機能します。

于 2012-09-20T10:44:31.810 に答える