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 Configurar um Ambiente WordPress com Docker e phpMyAdmin

Como Configurar um Ambiente WordPress com Docker e phpMyAdmin

Desenvolver WordPress localmente com Docker é uma maneira eficiente de criar e testar plugins, temas e personalizações. Neste artigo, vamos... Leia mais

Como instalar a Linguagem ELIXIR no Linux.

Como instalar a Linguagem ELIXIR no Linux.

Elixir é uma linguagem de programação dinâmica e funcional, desenvolvida por José Valim em 2011, projetada para construir aplicações escaláveis... 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

Como Usar Between Entre Duas Colunas de Data no Laravel

Como Usar Between Entre Duas Colunas de Data no Laravel

Trabalhar com intervalos de datas é uma necessidade comum em aplicações web, especialmente em sistemas que lidam com eventos, agendamentos... Leia mais