joshuawebdev/csv2sql

此包最新版本(v1.4)没有可用的许可信息。

将csv文件内容转换为可能用于创建表的sql指令

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

This package is auto-updated.

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


README

PHP脚本,读取csv格式的文件并将其转换为sql指令

描述

读取由数据库或电子表格导入的csv格式的表格文件。

csv文件的第一个行包含表的属性。从第二个行开始,包含表每条记录的数据。第一个行被分割并转换为一个数组,其中元素是表的属性。文件的其余行也被转换为数组,其中每个元素是表的数据。

依赖

需要在计算机上安装PHP版本5.6或更高版本(支持终端执行)和依赖项管理器Composer

安装

composer require joshuawebdev/csv2sql

执行

程序通过终端(Windows中的命令提示符)运行。它接受两个参数

  1. csv文件的本地路径,该文件将被转换为sql
  2. 转换后生成的表名

执行示例

php csv2sql.php [param1] [param2]

[param1][param2]是上述参数。

使用示例

将data_example.csv文件转换为名为alunos的sql文件,其中包含创建表的指令。

php csv2sql.php csv/data_example.csv alunos

建议

  • 此版本的程序在处理csv文件之前需要一些改进,例如删除空白、不必要的行或其他由电子表格自动生成的非必要信息。因此,在运行程序之前删除这些不一致性是一个好主意。
  • 可能生成的查询中会有一些不应存在的文本残留,例如多余的逗号或数值字段的双引号。因此,在尝试在数据库中执行这些查询之前,删除这些内容非常重要。
  • csv文件的标准分隔符是逗号,但在处理巴西货币单位(例如R$ 10,00)时,这可能会成为一个问题,因为逗号也用于分隔小数点。在这种情况下,有两个解决方案:将货币单位转换为美国标准(其中使用点来分隔小数点)或更改分隔符为其他字符,如分号。您可以通过更改src/Csv2Sql.php中的$separator属性来实现。
  • 您还可以在项目中实现此库,通过实例化Csv2Sql类。示例
<?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)

未来改进

  • 程序缺少处理通过导入.csv文件获得的数据的功能,例如:删除空白、冗余等功能。
  • 生成的查询返回所有字符串类型的字段,而不管原始类型是什么(整数、双精度浮点、日期时间等)。