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

Como Resolver Problemas de Permissões ao Usar Docker no WSL2

Como Resolver Problemas de Permissões ao Usar Docker no WSL2

O Docker é uma ferramenta poderosa para gerenciar contêineres, e sua integração com o WSL2 no Windows oferece um ambiente... Leia mais

Como instalar o Go Language no Ubuntu ?

Como instalar o Go Language no Ubuntu ?

Então resolvi tirar um tempo para conhecer outras linguagens de programação e no momento resolvi iniciar com a GO pois... Leia mais

Alterar função ONCLICK de um botão com JavaScript Vanilla

Alterar função ONCLICK de um botão com JavaScript Vanilla

Vamos lá a mais um estudo de caso. Na tela abaixo temos um crud simples cujo frontend foi feito com... Leia mais

Como Executar Migrations e Seeders Específicas no Laravel

Como Executar Migrations e Seeders Específicas no Laravel

Para rodar uma migration específica no Laravel, você pode usar o comando migrate com a opção --path. Siga os passos... Leia mais