PauloRB.dev

Desenvolvedor de Software

Importando Dados de um Arquivo CSV para o PostgreSQL Usando PDO::pgsqlCopyFromArray no Laravel | PauloRB.dev Importando Dados de um Arquivo CSV para o PostgreSQL Usando PDO::pgsqlCopyFromArray no Laravel – PauloRB.dev
Importando Dados de um Arquivo CSV para o PostgreSQL Usando PDO::pgsqlCopyFromArray no Laravel

Importando Dados de um Arquivo CSV para o PostgreSQL Usando PDO::pgsqlCopyFromArray no Laravel

O método PDO::pgsqlCopyFromArray permite copiar dados de um array diretamente para uma tabela no PostgreSQL. Este tutorial mostra como usar esse método no contexto do Laravel.

Os métodos do PDO no Laravel podem ser acessados diretamente através da conexão com o banco de dados fornececida pelo Eloquent.

use Illuminate\Support\Facades\DB;

try {
    $pdo = DB::connection()->getPdo();
    $tableName = 'nome_da_tabela';
    $delimiter = "\t";
    $nullAs = "\\N";

    $pdo->pgsqlCopyFromArray($tableName, $dados, $delimiter, $nullAs);
    echo "Dados inseridos com sucesso!";
} catch (PDOException $e) {
    echo 'Falha ao inserir dados: ' . $e->getMessage();
}

Este exemplo mostra como ler um arquivo CSV, converter seus dados em um formato adequado e importá-los para uma tabela PostgreSQL usando o método PDO::pgsqlCopyFromArray no Laravel.

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
use PDOException;

class ImportController extends Controller
{
    public function importCsv(Request $request)
    {
        // Validação do arquivo
        $request->validate([
            'csv_file' => 'required|file|mimes:csv,txt',
        ]);

        // Caminho do arquivo CSV
        $path = $request->file('csv_file')->getRealPath();

        // Ler o conteúdo do arquivo CSV
        $file = fopen($path, 'r');
        $dados = [];
        while (($linha = fgetcsv($file, 1000, ",")) !== FALSE) {
            $dados[] = implode("\t", $linha);
        }
        fclose($file);

        // Inserir dados na tabela usando pgsqlCopyFromArray
        try {
            $pdo = DB::connection()->getPdo();
            $tableName = 'nome_da_tabela';
            $delimiter = "\t";
            $nullAs = "\\N";

            $pdo->pgsqlCopyFromArray($tableName, $dados, $delimiter, $nullAs);
            echo "Dados inseridos com sucesso!";
        } catch (PDOException $e) {
            echo 'Falha ao inserir dados: ' . $e->getMessage();
        }
    }
}

Utilizar PDO::pgsqlCopyFromArray é uma maneira eficiente de inserir grandes volumes de dados no PostgreSQL. Certifique-se de validar o arquivo e manipular exceções adequadamente para garantir uma importação segura e eficaz.

Para mais detalhes, consulte a documentação oficial do PHP.

Mais Posts

Script para automatizar instalações de ferramentas em ambiente LINUX

Script para automatizar instalações de ferramentas em ambiente LINUX

Para agilizar as instalações das minhas ferramentas de desenvolvimento quando for necessário resolvi montar o seguinte script: Basta colocar o... Leia mais

Como desfazer alterações em arquivos indesejados num Pull Request (PR)

Como desfazer alterações em arquivos indesejados num Pull Request (PR)

Ao criar um Pull Request, é comum perceber depois que um arquivo foi modificado por engano ou não deveria estar... Leia mais

Programação Funcional no Elixir: Fundamentos e Exemplos

Programação Funcional no Elixir: Fundamentos e Exemplos

A programação funcional está se tornando cada vez mais popular devido à sua simplicidade e capacidade de lidar com paralelismo... Leia mais

A função WITH RECURSIVE no PostgreSQL

A função WITH RECURSIVE no PostgreSQL

A função WITH RECURSIVE no PostgreSQL é uma ferramenta poderosa para a execução de consultas recursivas em bancos de dados.... Leia mais