Skip to content

Flyokai Fujin Shuttle

High-throughput CSV bulk import/export for Shopware 6. Fujin Shuttle moves large product catalogues in and out of Shopware — products, variants, categories, entity metadata, product extras, inventory and rules — at speeds far beyond the standard import.

It is the Shopware-side port of the Unirgy Rapidflow architecture: agents, deputies, processor pipelines and batch emitters that write through raw bulk SQL on a non-blocking AMPHP connection pool, rather than going row-by-row through the Shopware DAL.

How fast?

On a localhost MySQL box the products insert path is ~5,300 rows/s with media off — about 80× the original naive importer and 9× the Rapidflow reference target. With media, throughput depends on the strategy you pick. See Performance & tuning.

Why it exists

The standard Shopware import/export is correct but DAL-bound: each row is a write request that fans out into entity, translation, association and indexer work. For a 50k-product catalogue that is slow. Fujin Shuttle keeps Shopware's data model but changes the write path:

  • Two passes. Pass A resolves every referenced code (category paths, manufacturers, property options, sales channels, …) to IDs once, up front. Pass B streams the rows and writes them in large batches.
  • Bulk SQL. Rows are written with INSERT … ON DUPLICATE KEY UPDATE built by a dedicated bulk writer, not one DAL call per row.
  • Async concurrency. Batches run concurrently on a pooled, non-blocking mysqli driver, so while one batch awaits the database another is already building.

Feature tour

  • Seven data types

    Products, product variants, categories, entity metadata, product extras, inventory and rules — each importable and exportable. See Data types.

  • Admin UI + CLI

    Build reusable import profiles in the admin with live progress and a stop button, or drive ad-hoc runs from the command line.

  • Wide-column CSV

    One row per product, with multi-value columns for categories, visibility, properties and media, plus locale-suffixed translation columns. See the CSV reference.

  • Three media strategies

    filesaver (safe), raw (fastest) and worker (safe + parallel), with configurable thumbnail generation. See Media import.

How a run works

CSV file
ProfileFacade ──► Agent (per data-type + mode) ──► Deputy
                          Pass A: resolve all referenced codes → ID maps
                          Pass B: stream rows ──► BatchEmitter ──► concurrent batches
                                              Channel ──► RequestHandler ──► Depot
                                            INSERT … ON DUPLICATE KEY UPDATE (bulk)

Read the full picture in Concepts & architecture.

Three ways in

Create a profile under Catalog ▸ Fujin Shuttle ▸ Import / Export profiles, upload a CSV, and press Run. Progress streams live; large imports are queued to a worker so the request never times out. → Admin UI & profiles

bin/console fujin:shuttle:run products.csv --type=product --reindex=none

No job tracking, ideal for scripting and one-off loads. → CLI commands

bin/console fujin:shuttle:run-profile <profileId>

Runs a stored profile under a tracked job with live progress and honours the admin stop button — the headless path for very large files. → CLI commands

Next steps