私は、webappの中核となるコードチャンクを完成させるMySQL初心者です。コードはCSVファイル(ローカル)をインポートします。これはFileMakerによって生成され、クリーンアップされ、そのまま残されます。LOAD DATA LOCAL INFILEをエラーキャッチする最も良い方法は?
これは、ある時点ですぐに(そしておそらく500MB未満のデータベースになります)、私は道路上の問題を防ぐために行うことができるより良いエラーチェック/キャッチがあるかどうかを知りたいと考えています私のサーバー設定に警告することができます。私は一時ログなどについて読んだことがあります。私のMySQL管理はまだ嗅ぎどころではありません。
非常に基本的なコードは次のとおりです。
$m = mysql_connect('localhost', 'mytable', 'mypassword');
$db = 'mydb';
mysql_select_db($db) or die("Import Error - Couldn't select database: " . mysql_error());
$sql = 'load data local infile "inventory.csv"
into table ibl_account_details_temp fields terminated by ","
optionally enclosed by "\""
lines terminated by "\r"
(store_id, SKU, account, item_number, brand, description, size, category, price, qty, fees)
';
echo mysql_query($sql) or die(myqsl_error());
PSの編集:私はまた、インポートのこのメソッドはSQLインジェクションに開いているかどうかを知るのが大好きですか?
MySQLがCSVファイルの内容を実行していないので、「LOAD DATA INFILE」を実行することで、最初にSQLインジェクションが発生する可能性はありません。単にCSVとして解析するだけです。もちろん、二次攻撃のリスクについては何も言及していませんが、入力を受け取るすべてのクエリ(クエリ結果からの入力を含む)がパラメータ化を使用する限り、安全でなければなりません。 mysql_ *関数の代わりにmysqlにアクセスするには、mysqliまたはPDOを使用する必要があります。 –
私は以前の単純なinsert文を使用していましたが、fgetcsvは18MBのファイルでメモリ不足になりました。私はそれを解決することができず、128MBのRAMでホストによって最大限にされ、この作業を取得/維持する必要があります。それは、私がPDOを使用している他のすべての場所、----- – SWL
確かに、私はCSVをインポートするために 'LOAD DATA INFILE'を使用することに異論はありません。 –