sql >> データベース >  >> RDS >> Mysql

.CSVファイルからMySQLデータベース内の製品を比較/挿入/更新するための最良の方法は何ですか

    同様の状況がありました。スクリプトを改善するために多くの試みを行った結果、インポートを機能させるために別のアプローチが必要であり、10時間もかからないことにしました。

    私たちが行ったのは、すべてのPHPコードをダンプし、代わりにmysqlimportを使用することでした。 CSVファイルの内容をテーブルに直接ロードします。このテーブルには、必要なものがすべて含まれていますが、便利な形式ではありません(構造がない、一部のフィールドに処理が必要ななど)

    ただし、すべてがデータベースにあるため、クエリで必要なすべてを実行できます。たとえば、インポートファイルに存在しなくなったすべてのデータを削除すると、DELETE FROM structured_table AS st LEFT JOIN unstructured_table AS ut ON st.someField = ut.someField WHERE ut.someField IS NULL; 、既存のレコードの更新は、UPDATE structured_table AS st INNER JOIN unstructured_table AS ut ON st.someField = ut.someField SET st.anotherField = CONCAT(ut.aField, ' ', ut.yetAnotherField);

    明らかに、複雑なインポートスクリプトの場合、クエリはより複雑になり、より多くのクエリが必要になります。個々のフィールドで処理を行うために、いくつかのストアドプロシージャを投入する必要がある場合もあります。しかし、この種のアプローチをとることができれば、大量のデータを処理でき、非常にスケーラブルなプロセスになります。



    1. PHP PDOクラスプログラミング:致命的なエラー:ブール値でメンバー関数fetchAll()を呼び出します

    2. エラー:追加情報:外部テーブルが予期された形式ではありません

    3. MySQLでフィールドがnullまたは空かどうかを確認するにはどうすればよいですか?

    4. T-SQLを使用してSQLServerのテーブルの列権限を取得します:sp_column_privileges