yajra/laravel-sql-loader
Yajra's Laravel SQL Loader provides a simple way to import and execute .sql files in Laravel. Use Artisan and your configured database connections to run schema dumps, seed scripts, or bulk SQL, making setup, deployments, and data loading more repeatable across environments without manual copy-paste...
sqlldr, and the CHARACTERSET feature in v1.10.0 corroborate this), while another describes generic .sql / MySQL-style dump imports. This is not a documentation nit — it decides whether the package is applicable to your stack at all. Decision: treat Oracle SQL*Loader as the working hypothesis, and spend one spike to verify it against composer.json and the source tree before it appears on any roadmap slide. PM framing: a half-day diligence cost against a potentially wrong architectural bet.sqlldr shell scripts and control-file templating. The real cost is not code — it is operational: DBA engagement, Oracle client provisioning, staging-table conventions, and control files that must be version-controlled like migrations. Budget for the org work, not the engineering work.CHARACTERSET support to the control file. That is the single most product-relevant change in the release: it turns multilingual catalogues/partner feeds/legacy ERP extracts from "risky, may silently corrupt" into "declarable and reviewable." Decision: set ^1.10 as the floor for any roadmap item touching non-ASCII data.sqlldr log, and pre-agree that forking is an acceptable exit given the thin surface.sqlldr while keeping Oracle's loader semantics rather than reimplementing bulk loading with chunked ORM inserts.sqlldr and the Oracle client cannot be installed; real-time or streaming ingestion; transformation-heavy pipelines; workflows needing transactional guarantees beyond SQL*Loader's behaviour; or any requirement for cross-database abstraction.sqlldr or use OCI8 direct-path (i.e. is Instant Client mandatory)? (4) what is the failure contract — parsed exit codes and .bad/.discard surfacing, or a bare boolean? (5) does CHARACTERSET apply to the control file only or also the client session/NLS_LANG? (6) test-suite and CI depth..bad files while the process reports success, row-count-in vs row-count-committed must become a surfaced metric with an alert. If the package cannot give you that, wrap it until it does — or don't ship.CHARACTERSET support, which is what unblocks the international/legacy-encoded feed work currently sitting in the roadmap; without it, those files risk loading as corrupted data with no error. It is a minor, non-breaking release. Recommendation: approve a bounded pilot on one ingestion job, contingent on confirming within a spike that the package does what its name says.sqlldr (config, commands, control-file generation) so ingestion runs like any other Artisan/queue job; it does not touch the domain layer, Eloquent events, or model validation. The code risk is small and the exit cost (fork/vendor) is low; the environmental risk is the whole risk. Sequence accordingly: (1) prove the environment first — DBA-approved Instant Client, sqlldr on PATH, connectivity, scratch staging table, throwaway control file — because that ticket is days-to-weeks, not hours; (2) commit control files next to migrations, one per target table, reviewed in the same PR; (3) pilot behind a feature flag in parallel with the incumbent importer, diffing row counts and a checksum; (4) cut over, keeping the legacy path one release. Pin ^1.10 and composer.lock, and also pin and document the Oracle client and server versions — sqlldr option and charset behaviour vary by release and the wrapper cannot shield you. Instrument rows-read vs rows-committed as the top metric, alert on divergence, and load-to-staging-then-swap rather than writing to live tables. Serialise loads per target table: direct-path loading scales with file size and poorly with concurrency. Accept that you are the reference implementation for a package with 9 stars and 0 dependents — which is precisely why the blast radius should stay confined to a few ingestion commands.How can I help you explore Laravel packages today?