Ejercicio
SQL a texto
Objetivo
Debe crear un programa C# 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 de Ejemplo
using System;
using System.IO;
namespace SQL2text
{
class Program
{
static void Main(string[] args)
{
StreamReader ficheroEntrada = null;
string linea;
string nombre;
Console.WriteLine("Not enough parameters!");
Console.Write("Enter file name: ");
nombre = Console.ReadLine();
try
{
ficheroEntrada = File.OpenText(nombre);
}
catch (Exception e)
{
Console.WriteLine(e.Message);
}
try
{
do
{
linea = ficheroEntrada.ReadLine();
if (linea != null)
{
Console.WriteLine();
string tableName = linea.Substring(12).Split(' ')[0];
string[] campo = linea.Substring(linea.IndexOf("(") + 1,
linea.IndexOf(")") - linea.IndexOf("(") - 1).Split(',');
string[] valores = linea.Substring(linea.IndexOf("values (") + 9,
linea.IndexOf(");") - linea.IndexOf("values (") - 9).Split(',');
Console.WriteLine(tableName);
for (int i = 0; i < campo.Length; i++)
{
Console.Write(campo[i].Trim() + ": ");
Console.WriteLine(valores[i].Trim().Replace("'", ""));
}
}
} while (linea != null);
}
catch (Exception e)
{
Console.WriteLine(e.Message);
}
Console.ReadLine();
}
}
}