Webプロジェクト開発では、データのバッチインポートは一般的な要件の1つです。 ThinkPhp6は完全なファイルアップロードメカニズムを提供し、MySQL自体には強力なデータインポート機能、特にLoad Data Infileコマンドがあります。この記事では、2つを組み合わせて安定した効率的な大規模な輸入ソリューションを実現する方法について説明します。
正式に開始する前に、次の条件を保証する必要があります。
最初に、ユーザーがインポートする必要があるデータファイルを選択してアップロードするためのファイルをアップロードするためのインターフェイスを作成します。
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のロードデータローカルインフィルを使用すると、ファイルをすばやく読み取り、テーブルにデータを挿入できます。
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コマース、データ管理システム、データインポートの頻度が高いコンテンツ管理システムなどのシナリオに適しています。