SQL a texto Curso de Programación Java

Lección:

Administración de Archivos


Ejercicio:

SQL a texto 33


Objetivo:

Debe crear un programa java capaz de analizar comandos INSERT del lenguaje SQL y extraer sus datos para separar líneas de texto, de la siguiente manera: si el archivo de entrada contenía estas tres líneas:

inserte en personas (nombre, dirección, edad) valores ("smith, pedro", "your street", 23);

insertar en las personas (nombre, dirección, edad) valores ("juan", "calle cinco, 6", 24);

insertar en ciudades (código, nombre) valores ("a", "alicante");

El archivo resultante debe tener en cada línea el nombre de un campo, seguido de dos puntos y su valor. Además, cada registro debe ir precedido del nombre de la tabla y seguido de una línea en blanco, como esta:

nombre de la persona: smith, pedro dirección: su calle edad: 23

personas nombre: juan Dirección: calle 5, 6 edad: 24

ciudades código: un nombre: alicante


Código:

package SQL2text;
import java.util.*;

public class Main
{
	public static void main(String[] args)
	{
		java.io.FileReader ficheroEntrada = null;
		String linea;
		String nombre;

		System.out.println("Not enough parameters!");
		System.out.print("Enter file name: ");
		nombre = new Scanner(System.in).nextLine();

		try
		{
			ficheroEntrada = new java.io.FileReader(nombre);
		}
		catch (RuntimeException e)
		{
			System.out.println(e.getMessage());
		}

		try
		{
			do
			{
				linea = ficheroEntrada.ReadLine();
				if (linea != null)
				{
					System.out.println();
					String tableName = linea.substring(12).split("[ ]", -1)[0];
					String[] campo = tangible.StringHelper.substring(linea, linea.indexOf("(") + 1, linea.indexOf(")") - linea.indexOf("(") - 1).split("[,]", -1);
					String[] valores = tangible.StringHelper.substring(linea, linea.indexOf("values (") + 9, linea.indexOf(");") - linea.indexOf("values (") - 9).split("[,]", -1);

					System.out.println(tableName);
					for (int i = 0; i < campo.length; i++)
					{
						System.out.print(campo[i].trim() + ": ");
						System.out.println(valores[i].trim().replace("'", ""));
					}
				}
			} while (linea != null);
		}
		catch (RuntimeException e)
		{
			System.out.println(e.getMessage());
		}
		new Scanner(System.in).nextLine();
	}
}