每月免费发送 4,000 封电子邮件 | Mailtrap 现在发送真正的电子邮件!

使用 Laravel Ingest 简化数据导入流程

最后更新于 经过

使用 Laravel Ingest 镜像简化数据导入

Laravel Ingest 罗宾·科普 是一个配置驱动的 ETL(提取、转换、加载)包,它用声明式导入类取代了一次性导入脚本。它通过 PHP 生成器和 Laravel 队列处理从几百行到几千万行的文件,并保持内存使用量与文件大小无关。

主要特点

  • 使用流畅的声明式导入器类 IngestConfig 建造者
  • 自动解析 BelongsToBelongsToMany 关系
  • 重复数据处理策略: SKIP , CREATE , UPDATE , 和 UPDATE_IF_NEWER
  • 在写入数据库之前,使用试运行模式验证导入操作。
  • 使用可下载的 CSV 导出功能进行行跟踪失败
  • 列别名用于将不同的标题名称映射到单个字段
  • 基于行数据的动态模型解析
  • 导入源:文件上传、文件系统磁盘(包括 S3)、URL、FTP 和 SFTP
  • 每个导入器自动生成的 Artisan 命令和 REST API 端点

定义导入器

安装软件包并运行迁移后,您需要创建一个实现以下接口的导入器类: IngestDefinition 并返回一个 IngestConfig 按照惯例,他们居住在 App\Ingest 命名空间:

命名空间 应用程序/摄取 ;
使用 应用程序\模型\产品 ;
使用 LaravelIngest\Contracts\IngestDefinition ;
使用 LaravelIngest\DTOs\IngestConfig ;
使用 LaravelIngest\Enums\DuplicateStrategy ;
使用 LaravelIngest\Enums\SourceType ;
班级 产品进口商 实现 摄取定义
{
民众 功能 获取配置 () : IngestConfig
{
返回 IngestConfig :: 为了 产品 ::班级
-> 来自源 源类型 :: 上传
-> keyedBy 'sku'
-> onDuplicate 复制策略 :: 更新
-> 地图 “产品名称” , '姓名'
-> 涉及 '类别' , '类别' , 类别 ::班级 , 'slug'
-> 证实 ([
'sku' => '必填|字符串' ,
“产品名称” => 'required|string|min:3' ,
]);
}
}

在您的系统中注册进口商 AppServiceProvider 使用该软件包的标签:

使用 LaravelIngest\IngestServiceProvider ;
$this -> 应用程序 -> 标签 ([ 产品进口商 ::班级 ], 摄取服务提供者 :: INGEST_DEFINITION_TAG (英文):

运行导入

注册完成后,该软件包会为每个导入器公开一个 Artisan 命令和一个 HTTP 端点。

通过命令行界面:

php 工匠 摄取:运行 产品进口商 --file=products.csv

通过 API(多部分表单上传):

POST /api/v1/ingest/upload/product-importer

对于演练,请附加以下内容 --dry-run 向 Artisan 命令添加标志,以验证文件并显示任何错误,而无需触及数据库。

监控

该软件包包含多个 Artisan 命令,用于检查正在进行或已完成的导入:

php 工匠 摄取:列表 # 列出已注册的进口商
php 工匠 摄取:状态 { ID } # 显示进度和行统计信息
php 工匠 摄入:取消 { ID } # 停止正在进行的导入
php 工匠 摄入:重试 { ID } # 仅重新处理失败的行

同时还提供等效的 REST 端点:

  • GET /api/v1/ingest — 近期跑步
  • GET /api/v1/ingest/{id} — 状态和统计数据
  • GET /api/v1/ingest/{id}/errors/summary — 汇总误差细分
  • GET /api/v1/ingest/{id}/failed-rows/download — 失败行的 CSV 文件

活动

该软件包会在整个导入生命周期中分发事件—— IngestRunStarted , ChunkProcessed , RowProcessed , IngestRunCompleted , 和 IngestRunFailed — 您可以监听通知或自定义副作用。

您可以在以下位置找到 Laravel Ingest: GitHub 并阅读完整文档。 Laravel Ingest 文档

Yannick Lyn Fatt 的照片

Laravel News 的特约撰稿人和全栈 Web 开发人员。

归档于:
立方体

Laravel 时事通讯

加入超过 4 万名开发者的行列,不错过任何新的技巧、教程等内容。

图像
了解软科技

以每小时 20 美元的价格聘请具备人工智能专业知识的 Laravel 开发人员。48 小时内即可开始工作。

访问 Acquaint Softtech
Tinkerwell 徽标

廷克威尔

Laravel 开发者必备的代码运行器。可在本地和生产环境中体验 AI、自动补全和即时反馈功能。

廷克威尔
几天内即可获得 Laravel 代码审查徽标的专家指导

几天内即可获得 Laravel 代码审查方面的专家指导

专家级代码审查!两位拥有 10 年以上 Laravel 开发经验的开发者将为您提供清晰、实用的反馈,帮助团队构建更优质的应用程序。

几天内即可获得 Laravel 代码审查方面的专家指导
PhpStorm 标志

PhpStorm

首选的 PHP IDE,对 Laravel 及其生态系统提供广泛的开箱即用支持。

PhpStorm
Laravel Cloud 标志

Laravel 云

轻松创建和管理服务器,并在几秒钟内部署 Laravel 应用程序。

Laravel 云
了解 Softtech 的标志

了解软科技

Acquaint Softtech 提供 AI 就绪的 Laravel 开发人员,48 小时内即可上手,每月费用为 3000 美元,没有冗长的销售流程,并提供 100% 退款保证。

了解软科技
Kirschbaum 标志

樱桃树

提供创新和稳定性,确保您的Web应用程序取得成功。

樱桃树
Shift 标志

转移

还在运行旧版本的 Laravel?立即实现 Laravel 自动升级和代码现代化,让您的应用程序保持最新状态。

转移
鱼叉:新一代时间跟踪和发票标志

Harpoon:新一代时间跟踪和发票系统

新一代时间跟踪和计费软件,帮助您的机构规划和预测盈利的未来。

Harpoon:新一代时间跟踪和发票系统
Lucky Media 标志

幸运传媒

Get Lucky Now——拥有十余年经验的 Laravel 开发理想之选!

幸运传媒
SaaSykit:Laravel SaaS 入门套件徽标

SaaSykit:Laravel SaaS 入门套件

SaaSykit 是一个多租户 Laravel SaaS 入门套件,包含运行现代 SaaS 所需的所有功能,例如支付、美观的结账界面、管理面板、用户仪表盘、身份验证、现成组件、统计数据、博客、文档等等。

SaaSykit:Laravel SaaS 入门套件
Inertia.js v3.0.0 版本发布,包含乐观更新、useHttp 等更多功能(图片)。

Inertia.js v3.0.0 版本发布,新增乐观更新、useHttp 等功能。

阅读文章
Laravel Boost v2.4.0 新增安全审计和 Laravel 最佳实践技能图片

Laravel Boost v2.4.0 新增安全审计和 Laravel 最佳实践技能

阅读文章
在 Laravel 镜像中构建事务安全的多文档操作

在 Laravel 中构建事务安全的多文档操作

阅读文章
使用 Laravel 构建 AI:使用 Laravel 13 的 AI SDK 镜像构建您的第一个代理

使用 Laravel 构建 AI:使用 Laravel 13 的 AI SDK 构建您的第一个代理

阅读文章
OG Kit:使用 HTML 和 CSS 生成动态 Open Graph 图像

OG Kit:使用 HTML 和 CSS 生成动态 Open Graph 图像

阅读文章
Prism Workers AI — 为 Prism PHP 图像提供 Cloudflare Workers AI 服务

Prism Workers AI — 为 Prism PHP 提供 Cloudflare Workers AI 服务

阅读文章