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 instalar o RabbitVCS no ubuntu 18.04

Como instalar o RabbitVCS no ubuntu 18.04

Caso você sendo usuário Linux e precise instalar um gerenciador de SVN temos como alternativa o RABBITVCS. São apenas dois... Leia mais

Por que whereNull não funciona com updateOrCreate no Laravel (e como evitar bugs silenciosos)

Por que whereNull não funciona com updateOrCreate no Laravel (e como evitar bugs silenciosos)

O updateOrCreate() é um dos métodos mais utilizados no Eloquent para garantir que registros sejam atualizados ou criados sem duplicações.... Leia mais

Como instalar o Docker no Linux(Ubuntu)

Como instalar o Docker no Linux(Ubuntu)

Para instalar o docker no ubuntu basta seguir os passos abaixo: Abra o terminal do Linux copie e cole os... Leia mais

Instalar o PGAdmin 4 em distribuições Linux Debian 12

Instalar o PGAdmin 4 em distribuições Linux Debian 12

Recentemente enquanto utilizava o Linux Mint 21 Vera tive uma série de problemas ao instalar o PGAdmin 4 e numa... Leia mais