joshuawebdev/csv2sql

There is no license information available for the latest version (v1.4) of this package.

Convert content from csv files to sql instructions that might to be use on create tables

v1.4 2022-05-24 00:17 UTC

This package is auto-updated.

Last update: 2024-09-25 09:09:39 UTC


README

Script em PHP que lê um arquivo no formato csv e converte-o para instruções sql

Descrição:

Lê um arquivo no formato csv ao qual consiste em uma tabela importada de um banco de dados ou planilha.

A primeira linha do arquivo .csv contém os atributos da tabela. A segunda linha em diante contém os dados de cada registro da tabela. A primeira linha é dividida e transformada em um array onde seus elementos são os atributos da tabela. As demais linhas do arquivo também são convertidas em arrays onde cada elemento do array é um dado da tabela.

Dependências

É necessário ter instalado em seu computador o PHP a partir da versão 5.6 (versão com suporte a execução pelo terminal) e o gerenciador de dependências Composer.

Instalação

composer require joshuawebdev/csv2sql

Execução

O programa roda por meio de um terminal (prompt de comando, no caso do Windows). Ele recebe dois parâmetros:

  1. local do arquivo csv que será convertido para sql
  2. nome da tabela que será gerada após a conversão

Exemplo de Execução:

php csv2sql.php [param1] [param2]

[param1] e [param2] são os parâmetros citados acima.

Exemplo de Uso:

Vamos converter o arquivo data_example.csv para um arquivo sql com as instruções para gerar uma tabela chamada alunos.

php csv2sql.php csv/data_example.csv alunos

Recomendações

  • Esta versão do programa ainda exige algumas melhorias em relação a tratamento do arquivo csv antes da conversão, por exemplo eliminação de espaços em branco, linhas desnecessárias ou outras informações geradas automaticamente por uma planilha e que não sejam necessária para a criação das queries. Então uma dica seria eliminar essas inconformidades antes de executar o programa.
  • Pode ser que ao gerar as queries haja algum resíduo de texto aos qual não deveria estar lá quando forem executados em um banco de dados, por exemplo vírgulas a mais ou campo numéricos entre aspas duplas. Então é importante removê-los antes de tentar executar estas queries em seu banco de dados.
  • O padrão dos arquivos csv é usar vírgulas como separadores, porém, quando se trabalha com unidade monetária brasileira (R$ 10,00, por exemplo) isso pode se tornar um problema, pois também é usada a vírgula para separa as casas decimais. Neste caso há duas soluções: ou a unidade monetária é covertida para o padrão americano (onde é usado o ponto para separar as casas decimais) ou pode-se alterar o separador para outro caractere, como ponto-e-vírgula. Você pode fazer isso alterando a propriedade $separator em src/Csv2Sql.php.
  • Você também pode implementar a biblioteca em seu projeto instanciando um objeto da Classe Csv2Sql. Exemplo:
<?php

require __DIR__ . '/vendor/autoload.php';

use JoshuaWebDev\Csv2Sql\Csv2Sql;

$csv2sql = new Csv2Sql;

$csv2sql->setFile("csv/dados.csv");   // aqui você informa o local onde está o arquivo csv
$csv2sql->setTable("nome_da_tabela"); // aqui você dá o nome da tabela

$createDB = $csv2sql->getCreateTableQuery();  // query gerada para criar o BD (CREATE TABLE ...)
$insertData = $csv2sql->getInsertDataQuery(); // array contendo as queries para inserir os dados (INSERT INTO ...)

// HÁ OUTROS MÉTODO QUE VOCÊ PODE USAR COMO POR EXEMPLO

$csv2sql->getTableName();     // exibe o nome da tabela
$csv2sql->getColumnNames();   // retorna um array com o nome das colunas (head)
$csv2sql->getDataFromTable(); // retorna um array com os dados obtidos do arquivo csv (sem head, só os dados)

Melhorias Futuras

  • O programa carece de funções de tratamento dos dados obtidos por meio da importação do arquivo .csv, como por exemplo: funções que eliminem espaços em branco, redudâncias, etc.
  • A querie gerada retorna todos os campos do tipo string, independente de qual era o tipo original (integer, double, datetime, etc).