CSV ファイル データを MySql テーブルに一括アップロードするにはどうすればよいですか? LOAD DATA を使用する非常に高速な方法です。

PHPz
リリース: 2024-08-19 16:40:13
オリジナル
324 人が閲覧しました

?導入

行を反復処理してデータベースに挿入するために、まだ「for」または「while」ループを使用していますか? .csv ファイルの読み取りと MySQL データベースへのアップロードに別のコードをまだ作成していますか?

MySQL が提供する「LOAD DATA」ステートメントを使用して、線形ロジックに「NO」と言います。行数を最小限に抑え、パフォーマンスを大幅に向上させるために、コードを変更する準備をしてください。

MySql は LOAD DATA ステートメントを提供します。これは、非常に最小限のコードでテキスト ファイルからデータを読み取り、テーブルに挿入する非常に高速な方法です。

? LOAD DATA INFILE ステートメントとは何ですか?

MySQL の公式ドキュメントによると、LOAD DATA ステートメントはファイルからデータを非常に高速に読み取るために使用され、データベースを複数回ヒットする代わりに 1 回のクエリでこのデータをテーブルに挿入できます。 「INSERT INTO」クエリを使用します。

MySQL にはステートメントも用意されています -> 「SELECT…INTO OUTFILE」は、「LOAD DATA」の動作とまったく逆の動作を行い、データをテーブルからファイルに読み取ります。

MySql によって提供される mysqlimport ユーティリティは、データをインポートするためにサーバー上の LOAD DATA ステートメントを内部的に呼び出します。

?使い方は?

上記の要点スニペットは、一般的なデータ読み込みステートメントを示しています。利用可能なオプションはすべて上記のコードに記載されています。

ここでは、.csv ファイルを単純に読み取り、その行を互換性のあるテーブルに挿入する簡単な例に焦点を当ててみましょう。


簡単な例:

LOAD DATA INFILE ‘data.csv’ INTO TABLE db.my_table
ログイン後にコピー

すべての重要なオプションを含む全体的な例:

言うまでもなく、このステートメントが機能するには、CSV ファイルが適切にフォーマットされている必要があります。

上記のステートメントを使用すると、10 万行を超える .csv が数秒でテーブルにインポートされます。

ここで、注意すべき重要な点がいくつかあります:


上記のステートメントは MySql レベルで実行されるため、ソース ファイルはインポートするためにクライアントからサーバーにコピーされます。

これにより、セキュリティ上の問題がいくつか発生します。このコードを使用している間、クライアントとサーバーの接続が安全であることを確認する必要があります。

MySql 8.0 では、LOCAL を使用する機能はデフォルトで False に設定されています。サーバーとクライアントは LOCAL を許可するように構成する必要があるため、一部のユーザーは許可エラーが発生する可能性があります。

権限エラーの場合は、
local_infile

:
SET GLOBAL local_infile = true;
ログイン後にコピー
を有効にして権限をオーバーライドする必要があります。

注: このフラグをオーバーライドすることはセキュリティ ソリューションではなく、リスクを受け入れることを承認するものです。詳細については、このドキュメントを参照してください。

?‍?結論

MySql LOAD DATA ステートメントは、非常に短い時間でファイルを読み取るために使用されます。

このコードを任意のバックエンド API で使用して、ソース ファイルを提供できます。

ソース ファイルは任意のテキスト ファイルにすることができますが、この例では .csv を使用しています。

LOAD DATA LOCAL

は MySql 経由でソース ファイルをサーバーにコピーするため、サーバー側でセキュリティ対策を実装する必要があります。

mysqlimport

ユーティリティは内部で LOAD DATA ステートメントを使用します。 ステートメントに

IGNORE 1 LINES

を追加すると、CSV のヘッダーを無視できます。How to Bulk Upload CSV file data into MySql Table? A very fast way using LOAD DATA.

?参照

公式ドキュメント

以上がCSV ファイル データを MySql テーブルに一括アップロードするにはどうすればよいですか? LOAD DATA を使用する非常に高速な方法です。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:dev.to
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!