dotted-ai/parquet-to-sql
Composer 安装命令:
composer require dotted-ai/parquet-to-sql
包简介
Laravel helper to import Parquet files into PostgreSQL using COPY for speed.
README 文档
README
Helper para importar arquivos Parquet diretamente para tabelas PostgreSQL usando Laravel. Le o arquivo em lotes, tenta usar COPY para performance e faz fallback para inserts em massa.
Instalacao
composer require dotted-ai/parquet-to-sql
php artisan vendor:publish --tag=config --provider="ParquetToSql\\ParquetToSqlServiceProvider"
Dependencias:
- ext-pgsql habilitada no PHP para que o
pgsqlCopyFromArrayfuncione. codercat/php-parquet(ja esta no composer.json) para fazer o parse do arquivo.
Uso rapido (CLI)
php artisan parquet:import storage/app/data/users.parquet users \\ --truncate \\ --map=id=user_id --map=email=email_address
Opcoes principais:
--connection=escolhe a conexao (default:config('parquet-to-sql.connection')).--batch=tamanho do lote (default:config('parquet-to-sql.batch_size')).--timeout=timeout do COPY em segundos.--truncaterodaTRUNCATE TABLEantes de inserir.
Uso programatico
use ParquetToSql\ParquetImporter; $importer = app(ParquetImporter::class); $result = $importer->import( path: storage_path('app/data/users.parquet'), table: 'users', columnMap: ['id' => 'user_id', 'email' => 'email_address'], truncateBeforeImport: true, ); logger()->info('Import', $result->toArray());
Enfileirando
use ParquetToSql\ImportParquetJob; ImportParquetJob::dispatch( path: storage_path('app/data/users.parquet'), table: 'users', columnMap: ['id' => 'user_id'], connectionName: 'pgsql', truncateBeforeImport: false );
Configuracao
Arquivo config/parquet-to-sql.php:
connection: conexao de banco usada pelo importador.batch_size: quantas linhas sao lidas antes de enviar para o banco.copy_timeout: timeout do COPY em segundos.
Notas e limites
- O codigo tenta usar
PDO::pgsqlCopyFromArray; se nao existir (ex.: SQLite em testes), cai para inserts em lote. - Nomes de tabela aceitam esquema opcional (
schema.tabela) usando apenas letras, numeros e_. Nomes de colunas/targets do map aceitam apenas letras, numeros e_(sem pontos ou espacos) para manter SQL seguro. - O leitor padrao prioriza APIs de streaming (
readRows, row groups) para nao carregar o arquivo inteiro em memoria; se a lib expor apenasread(), ele ainda funciona, mas pode consumir mais memoria. - Se sua versao de
codercat/php-parquetexpuser metodos diferentes, implemente umParquetRowReaderproprio e passe no importador.
Testes
composer install --dev ./vendor/bin/phpunit
统计信息
- 总下载量: 7
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 0
- 点击次数: 0
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2025-11-24