2016-04-01 12 views
0

データベースにcsvをロードするためにmysqlロードデータをインラインで使用しています。私はそれが文字列の周りに二重引用符を追加するデフォルトの動作だが、私はそれをオフにするオプションがあると思っていた。私は、文字列の間にスペースがない場合、つまり車の中にスペースがないことをテストしました。しかし、文字列が私の車であれば、それは "私の車"として表示されます。私はとても多くのことを試みましたが、これらの引用を取り除くことはできません。私は二重引用符をすべての列の周りに追加し、Mysql ESCAPED BYを使用しましたが、それは動作しませんでした。MySqlロードデータインラインで文字列の前後に二重引用符を追加する

+0

をしてくださいあなたのSQLクエリを書きました。あなたのCSVを保存するときにCSVを変更することをお勧めします。フィールドセパレータの別のオプションを選択してください。 – Xenofexs

答えて

0

私はExcelを使用することをお勧めしません。オープンオフィスのCalcが優れているので、CSVをより多くのオプション(およびUTF-8)で保存することができます。

使用前にCSVを保存するときの設定を見てください。 )。

enter image description here

、データベースにCSVを追加するための私のコード:

$dataload = 'LOAD DATA LOCAL INFILE "'.$nomfichier.'" 
         REPLACE 
         INTO TABLE '.$this->csvTable.' CHARACTER SET "utf8" 
         FIELDS TERMINATED BY "\t" 
         IGNORE 1 LINES 
        '; 

あなたはCSVにアクセスして、必要などのように彼を救うことができない場合は、SQLオプションを使用することができます。 Docそして、このラインparticulary:

[{FIELDS | COLUMNS} 
     [TERMINATED BY 'string'] 
     [[OPTIONALLY] ENCLOSED BY 'char'] 
     [ESCAPED BY 'char'] 
    ] 
    [LINES 
     [STARTING BY 'string'] 
     [TERMINATED BY 'string'] 
    ] 
+1

残念ながら、このインスタンスではこれはうまくいきません。私は自分で作成したLibreOfficeルートとテキストファイルを試しました。以前にインポートされたバージョンのデータにはその問題がなかったため、これも新しい問題です。フィールドに二重引用符がある場合にのみ表示されます。私は現在どのようにそれを取り除くことができるか考えていますが、それはエレガントではありません。 – dengar81