3

こんにちは私はこの質問が私のためだけでなく、mysql LOADDATAINFILEを使用するすべての人のためであることを知っています。

load data infileを使用してデータをインポートするたびに、なぜこの( "")二重引用符を受け取るのか知りたいだけですか?csvからのデータはデータベースに正常に追加されましたが、たとえば、値内に二重引用符があります。例えば。

"value1" | "value2" | 「value3」

何か助けはありますか?これが私のmysqlスクリプトです。

echo $mysql = "LOAD DATA LOCAL INFILE '".$path ."' 
        REPLACE INTO TABLE table
        FIELDS 
            TERMINATED BY ',' 
        LINES 
            TERMINATED BY '\\n'
        IGNORE 1 LINES 
        (`column1`, `column2`, `column3`, `column4`..)";

        $query = mysqli_query($link, $mysql) or die(mysqli_error($link));

ありがとう

4

1 に答える 1

5

あなたの質問から、あなたのファイル内の値はこれに沿ったものであると推測しています、

"column1","column2","column3","column4"
"column1a","column2a","column3a","column4a"

mysqlステートメントでは、フィールドがで終了することだけを述べているので,、mysqlエンジンがaを検出するまで値を読み取り,、したがってqoutesを検出します。

フィールドが何かで囲まれているかどうかを宣言するためのmysql構文は、次のようになります。

FIELDS ENCLOSED BY '"'

新しいクエリは次のようになります。

"LOAD DATA LOCAL INFILE '".$path ."' 
    REPLACE INTO TABLE table
    FIELDS 
        TERMINATED BY ',',
        ENCLOSED BY '"'
    LINES 
        TERMINATED BY '\\n'
    IGNORE 1 LINES 
    (`column1`, `column2`, `column3`, `column4`..)"

これは、mysqlエンジンに、との間の文字を検索し、"その値をフィールド値として取得するように指示します。

あなたはmysqlのウェブサイトでそれについてもっと読むことができます。

http://dev.mysql.com/doc/refman/5.1/en/load-data.html

これがお役に立てば幸いです。

于 2013-03-12T13:50:49.870 に答える