Volver a las tareas

LM 1DAW · Tarea

RA5,6- JSON TO CSV, SQLITE

Instrucciones

Conversión a CSV y almacenamiento en SQLite

Amplía la práctica de JSON con las partes 4 y 5. Utiliza el mismo data.json y continúa trabajando en script.js.

Consulta el documento original de la práctica, enlazado en la diapositiva 367.

Ejercicio 4

Convertir JSON a CSV · RA5

Continúa sobre el proyecto anterior. En script.js, crea una función llamada convertirStopWordsACsv(data) que reciba los datos de data.json y convierta el array de palabras en una cadena CSV.

Para esta entrada:

{"stop": ["a", "de", "la", "y", "que", "el", "en"]}

El resultado debe ser una sola fila, sin cabecera:

a,de,la,y,que,el,en

Completa esta función:

function convertirStopWordsACsv(data) {
  // Completa la conversión.
}

Documentación de apoyo: Array.prototype.join().

Ejercicio 5

SQLite y generación de JSON · RA6

Utiliza SQLite para guardar las palabras vacías y recuperarlas en un nuevo documento JSON.

El esqueleto crea la tabla stop_words, con un identificador autoincremental y una columna palabra de texto, obligatoria y única.

Debes completar únicamente estas dos consultas SQL:

  1. La inserción de las palabras en la tabla.
  2. La selección de las palabras almacenadas.

La selección debe producir objetos con una propiedad palabra. La función facilitada crearJsonDesdeBaseDeDatos() los transforma en un objeto con la propiedad stop.

Código de partida

function crearJsonDesdeBaseDeDatos(resultadoConsulta) {
  let palabras = resultadoConsulta.map((fila) => fila.palabra);
  return { stop: palabras };
}

async function crearBaseDeDatosYGenerarJson(data) {
  let SQL = await initSqlJs({
    locateFile: (file) =>
      `https://cdnjs.cloudflare.com/ajax/libs/sql.js/1.10.3/${file}`,
  });
  let db = new SQL.Database();
  db.run(`
    CREATE TABLE stop_words (
      id INTEGER PRIMARY KEY AUTOINCREMENT,
      palabra TEXT NOT NULL UNIQUE
    );
  `);

  // Completa la consulta de inserción, conservando el parámetro.
  let insert = db.prepare(" VALUES (?)");
  data.stop.forEach((palabra) => insert.run([palabra]));
  insert.free();

  let resultadoConsulta = [];
  // Completa la consulta de selección.
  let select = db.prepare("");
  while (select.step()) {
    resultadoConsulta.push(select.getAsObject());
  }
  select.free();

  let json = crearJsonDesdeBaseDeDatos(resultadoConsulta);
  console.log(JSON.stringify(json));
}

Documentación de apoyo: Array.prototype.map().

Entrega

Adjunta un ZIP con la práctica ampliada, incluyendo los archivos de las partes 4 y 5 y los necesarios para ejecutar el proyecto.

Materiales de la tarea

No hay archivos adjuntos en esta tarea.