私は、CSVファイルをMySQLデータベースに定期的にアップロードするスクリプトに取り組んでいます。問題は、CSVファイルのフィールドの1つに、ユーザーが生成したテキストが含まれていることです。このテキストには、MySQLに適さない引用符やその他の文字が含まれている場合があります。
CSVファイルをアップロードする最も効率的な方法は、MySQLの「LOADDATAINFILE」コマンドを使用することであると判断しました。CSVをアップロードしたときにMyPHPAdminに表示されるコマンドは次のとおりです。
LOAD DATA LOCAL INFILE '/home/myfolder/tmp/property_re_1.csv' REPLACE INTO TABLE `markers`
FIELDS TERMINATED BY ';' ENCLOSED BY '"' ESCAPED BY '\\'
LINES TERMINATED BY '\r\n' # 2 rows affected.
このコマンドを使用してCSVをロードするだけでは機能しません。これは、プロセスが「」に達するとすぐに終了し、「ESCAPEDBY」\「」がその目的を果たしていないように見えるためです。
この場合、最初にPHPを使用してプログラムでCSVファイルの引用符をエスケープする必要があると思います。次に、SQLのLOAD DATA INFILEコマンドを使用して、「エスケープされた」ファイルをMySQLにロードします。
これは、「ベストプラクティス」の解決策がある一般的な問題であると確信しています。基本的に、私のスクリプトは、CSVファイルをMYSQLテーブルにロードする前に「クリーンアップ」する必要があります。
これは、賢明な心がこれに頭を悩ませるのを助けるために私が取り組んでいる実際のSQLテーブルとCSVファイルへのリンクです:https ://www.dropbox.com/sh/4iq10i51qlqyq8q/UjEQwvXKDA
よろしくお願いします。