この質問では、PHP を使用して CSV データを MySQL データベースにインポートするときに発生するいくつかの課題について説明します。
提供されたコードは、CSV ファイルを効果的にアップロードし、その内容を表示します。ただし、データベース内でテキスト データが 0 として表示され、インポートされたデータが引用符で囲まれる可能性があるという問題に直面しています。
1。テキスト フィールドが 0
として表示される この問題を解決するには、CSV ファイルのエンコードを確認してください。テキスト データと数値データの両方をサポートする UTF-8 であることを確認してください。さらに、データベース テーブルの列がテキスト データを受け入れるように適切に定義されていることを確認してください。
2.引用データ
引用により CSV ファイル内のデータを囲むことができます。この問題が発生した場合は、データベースにデータを挿入する前に、mysql_real_escape_string を使用してデータをサニタイズできます。この関数は、SQL インジェクション攻撃を防ぐために、引用符を含む特殊文字をエスケープします。
3.ヘッダー行の無視
ヘッダーが含まれる可能性がある CSV ファイルの最初の X 行をスキップするには、インポート プロセスを開始する前に fseek と fgetc を使用してファイル内を手動で進めます。
4.データ形式
データ形式は、インポート プロセス全体を通じて同じままである必要があります。小数を含む数値は、元の形式で保持されます。ただし、MySQL にはさまざまな形式 (10 進数、浮動小数点など) に特有のデータ型があることに注意することが重要です。そのため、データベースの列をそれに応じて定義することが重要です。
5.パフォーマンスの問題
報告された「致命的エラー」は、PHP の実行時間制限 (30 秒) を超えたことを示します。これは、大規模なデータセットをインポートするときによく発生します。これを解決するには、PHP 構成ファイル (php.ini) の max_execution_time 設定を増やすか、チャンク インポート メカニズムを実装して、複数のリクエストにわたってデータをより小さな部分に分けて処理します。
代替方法
回答で提案されているように、MySQL の LOAD DATA INFILE 機能の使用を検討できます。これにより、単一の SQL クエリを使用して CSV データを直接インポートできるようになり、パフォーマンスが向上し、PHP 処理ループが不要になります。
以上がPHP/MySQL での CSV データのインポートの問題をトラブルシューティングするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。