オンラインストアの在庫管理統計を計算するサービスの開発中に、異なるMySQLサーバー間でテーブルのインポート/エクスポートをすばやく整理するタスクが発生しました。 単純かつ透過的にそれを行う必要があったため、最適化が先に行われるため、MySQL 5.0ドキュメントから著者の推奨事項を使用することにしました。
データ交換フォーマットとして、CSVは実装が容易なため、正確に採用することにしました。
その結果、2つの機能が判明しました
テーブルをエクスポートする (
MySQL構文の説明 )
function export_csv( $table, // $afields, // - $filename, // CSV // ( web-) $delim=',', // CSV $enclosed='"', // $escaped='\\', // $lineend='\\r\\n'){
コメントテーブルのインポート (
MySQL構文の説明 )
function import_csv( $table, // $afields, // - $filename, // CSV , // ( web-) $delim=',', // CSV $enclosed='"', // $escaped='\\', // $lineend='\\r\\n', // CSV $hasheader=FALSE){
最後に何がありますか?
- 単一のMySQLクエリによって実行されるため、短くて非常に高速な関数。
- かなり柔軟な実装-フィールドのリストを含む多くのパラメーターを簡単に管理できます
- エクスポートの場合 :フィールド配列のフィールドのリストを変更することにより
$afields
または、テーブル名の代わりにサブクエリを使用します(このサブクエリのフィールドは配列で示されます)-たとえば、 $atable
このようになります (select field1, field1 from table2) t
- インポートするには :カスタム変数を使用して不要なフィールドをスキップします-たとえば、
array("column1", "@dummy", "column2", "@dummy", "column3")
CSVファイルの2番目と4番目のフィールドをスキップします。
したがって、開発の単純さと速度の問題は解決されます。 そして、速度と効率の問題が現れると、最適化を行うことも可能になります。
PS。 実際、これらのMySQLコマンドには設定が追加されたより豊富な構文があるため、このコードを改善する分野は必要性と想像力によってのみ制限されます。