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

Recursão com a Torre de Hanoi em PHP

Recursão com a Torre de Hanoi em PHP

Recursão é um conceito essencial em programação que se refere a uma função que se chama a si mesma dentro... Leia mais

Guia de Deploy de Aplicação Laravel com Nginx em uma VPS com Ubuntu e HTTPS em um VPS

Guia de Deploy de Aplicação Laravel com Nginx em uma VPS com Ubuntu e HTTPS em um VPS

Neste post, você aprenderá a fazer o deploy de uma aplicação Laravel em uma VPS rodando Ubuntu com o servidor... Leia mais

Converter Date Time String para data no formato YYYY-MM-DD

Converter Date Time String para data no formato YYYY-MM-DD

No post de hoje, vamos abordar uma necessidade comum em programação: como obter uma data no formato ANO-MÊS-DIA (YYYY-MM-DD) a... Leia mais

Como Configurar e Gerenciar um Banco de Dados MySQL com Docker Compose

Como Configurar e Gerenciar um Banco de Dados MySQL com Docker Compose

Configurar e gerenciar bancos de dados pode ser uma tarefa desafiadora, especialmente quando você precisa garantir a portabilidade e a... Leia mais