1 abril, 2021
Para exportar una lista de miles nombres e insertar a una base de datos usaremos Laravel donde programamos un script que apertura el documento txt y filtre
Suscríbete a nuestro canal en Youtube
Suscríbirseen ocaciones necesitamos exportar una lista de nombres a SQL y pues da el caso que te las entregan en .doc u otros formatos, para este tutorial exportaremos un documento txt a mysql usando el framework Laravel de una forma sencilla. Vamos entonces al asunto principal de este ejemplo:
Basicamente recibí una lista de nombres en .doc los cuales los guardé como txt, luego ubicamos los archivos en la carpeta public/recursos/nombre.txt, esto dentro del proyecto Laravel 8. Ud adjunta la lista de nombres a exportar.
Creamos un controlador exclusivamente para realizar la conversión con artisan :
php artisan make:controller ExportarController
Luego implementamos el método que hará la magía de exportar txt a sql con los filtros necesarios para obtener una lista limpia e insertarlos a SQL.
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Models\nombre;
class ExportarController extends Controller
{
public function index(){
$fp = fopen(public_path("recursos/nombres de mujeres.txt"), "r");
$array=['-','´','á','é','í','ú',"'",'ï',' ','ADVERTISEMENT'];
while (!feof($fp)){
$linea = fgets($fp);
$c=0;
foreach($array as $r){
if(trim($linea)!="ADVERTISEMENT")
if(strripos($linea,$r)):
echo "no guardar...".$linea."<br>";
else:
$c++;
if($c==count($array)):
echo "si guardar...".$linea."<br>";
// TABLA
$existe = nombre::whereName($linea)->first();
if(empty($existe)){
$n = new nombre();
$n->name = $linea;
$n->save();
$c=0;
}
endif;
endif;
}
}
fclose($fp);
}
}
Ahora creamos el modelo y migración con artisan
php artisan make:model Nombre -m
Implementamos el modelo y la migración
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class nombre extends Model
{
use HasFactory;
protected $fillable = [
'name'
];
}
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class CreateNombresTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('nombres', function (Blueprint $table) {
$table->id();
$table->text("name",20)->unique();
$table->timestamps();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('nombres');
}
}
finalmente realizamos una migración para que se refleje en nuestra base de datos la table nombres vacia
Ahora procedemos a levantar el proyecto Laravel con artisan
php artisan serve
Y abrimos la ruta en el navegador para que empiece el proceso de exportación de datos a MYSQL
http://localhost:8000/convertirtxtsql
Leido 3079 veces
© Todos los derechos reservados Codea App | ...de frente al código!!! | 2020 - 2023