現在の位置: ホーム> 最新記事一覧> ThinkPhp6にMySQLの効率的なバッチデータインポートを実装するための完全なガイド

ThinkPhp6にMySQLの効率的なバッチデータインポートを実装するための完全なガイド

gitbox 2025-07-26

ThinkPhp6のMySQLラージバッチデータインポートスキームの概要

Webプロジェクト開発では、データのバッチインポートは一般的な要件の1つです。 ThinkPhp6は完全なファイルアップロードメカニズムを提供し、MySQL自体には強力なデータインポート機能、特にLoad Data Infileコマンドがあります。この記事では、2つを組み合わせて安定した効率的な大規模な輸入ソリューションを実現する方法について説明します。

環境の準備

正式に開始する前に、次の条件を保証する必要があります。

  • ThinkPhp6フレームワークがインストールされ、構成されています
  • データベースとデータテーブルの構造の準備が整いました
  • 適切な読み取りおよび書き込みアクセス許可を備えたディレクトリをアップロードします

アップロードフォームを構築します

最初に、ユーザーがインポートする必要があるデータファイルを選択してアップロードするためのファイルをアップロードするためのインターフェイスを作成します。

 
use think\facade\View;
use think\facade\Request;

public function uploadFile()
{
    return View::fetch('upload_file');
}

プロセスファイルアップロードロジック

フォームにファイルをアップロードした後、アップロードされたファイルを確認して保存する必要があります。次のコードの例は、ファイル処理プロセスを示しています。

 
public function importData()
{
    $file = Request::file('file');
    $savePath = 'public/uploads/';
    $info = $file->validate([
        'size' => 2048000,
        'ext' => 'csv,xls,xlsx'
    ])->move($savePath);

    if ($info) {
        $filename = $info->getSaveName();
        $filePath = $savePath . $filename;
        // データのインポートロジックを実行します
    } else {
        // 障害処理ロジックをアップロードします
    }
}

MySQLデータのインポートを実行します

アップロードが成功した後、主要なインポートプロセスが次になります。 MySQLのロードデータローカルインフィルを使用すると、ファイルをすばやく読み取り、テーブルにデータを挿入できます。

 
use think\facade\Db;

public function importData()
{
    // ...アップロード後、パスとファイル名を取得します
    $filename = $info->getSaveName();
    $filePath = $savePath . $filename;
    $tableName = 'your_table_name'; // 実際のテーブル名に置き換えます

    $sql = "LOAD DATA LOCAL INFILE '{$filePath}' INTO TABLE `{$tableName}` FIELDS TERMINATED BY ','";
    Db::connect()->execute($sql);
}

インポート後の処理が完了しました

データのインポートが完了した後、ログの記録、結果の表示、その後のバッチ処理タスクの実行など、ビジネスニーズに応じてさらに動作できます。

 
public function importData()
{
    // ...前の手順は省略されています

    $sql = "LOAD DATA LOCAL INFILE '{$filePath}' INTO TABLE `{$tableName}` FIELDS TERMINATED BY ','";
    Db::connect()->execute($sql);

    // 結果処理ロジックをインポートすることができます
    // インポートログは、後続の追跡のために記録できます
}

結論

上記の手順を通じて、ThinkPhp6プロジェクトでMySQL大バッチデータのインポート操作を効率的に実装できます。合理的なエラー処理と伐採メカニズムに協力して、データのインポートの安定性と保守性を大幅に改善できます。このソリューションは、eコマース、データ管理システム、データインポートの頻度が高いコンテンツ管理システムなどのシナリオに適しています。