PHP を使用して CSV データを MySQL に効率的にインポートし、一般的な問題を回避する方法

Patricia Arquette
リリース: 2024-11-17 12:12:02
オリジナル
929 人が閲覧しました

How to Efficiently Import CSV Data into MySQL Using PHP and Avoid Common Issues?

PHP と MySQL を使用した CSV データのインポート

問題と質問

あるユーザーは、CSV データを MySQL データベースにインポート中に問題に直面し、次のような問題が発生しました。質問:

  1. インポートされたテキスト値は、データベースでは「0」として表示されます。
  2. 引用符で囲まれたデータはどのように処理しますか?
  3. 最初の数行は無視しますヘッダーを含む CSV ファイル。
  4. データベースにインポートするときにデータ形式 (小数点) を保持します。
  5. 大規模なデータのインポート中に「実行時間を超過しました」エラーが発生しました。

解決策

1. 「0」として表示されるテキスト値:

データはおそらく文字列ではなく整数としてデータベースにインポートされています。データベース列が正しいタイプ (例: TEXT または VARCHAR) であることを確認します。

2.引用符で囲まれたデータの処理:

LOAD DATA INFILE クエリで OPTIONALLY ENCLOSED BY 句を使用して、囲み文字 (例: ") を指定します。

3. ヘッダー行の無視:

クエリに LINES TERMINATED BY 句を追加し、行区切り文字 (n など) を指定します。その後、インポートする前に必要な最初の行数を手動で無視します。

4. データ形式の保持:

MySQL は、特に指定がない限り、数値を元の形式でデータベースに保存します。

5.時間超過エラー:

PHP の設定 (php.ini など) で max_execution_time 設定を増やして、実行時間を長くできるようにします。大規模なインポートの場合は、MySQL の LOAD DATA INFILE などのより効率的な方法の使用を検討してください。

代替ソリューション

PHP ループを使用してデータをインポートする代わりに、MySQL の LOAD DATA INFILE 機能を使用すると、単一の SQL クエリで CSV ファイルをテーブルに直接インポートできます。

$query = <<<'eof'
LOAD DATA INFILE '$fileName'
INTO TABLE tableName
FIELDS TERMINATED BY '|' OPTIONALLY ENCLOSED BY '"'
LINES TERMINATED BY '\n'
(field1,field2,field3,etc)
eof;

$db->query($query);
ログイン後にコピー

この方法は、PHP 解析ループよりも高速で効率的です。

以上がPHP を使用して CSV データを MySQL に効率的にインポートし、一般的な問題を回避する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート