Ejercicio
SQL a texto
Objetivo
Debe crear un programa Visual Basic 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
Imports System
Imports System.IO
Namespace SQL2text
Class Program
Private Shared Sub Main(ByVal args As String())
Dim ficheroEntrada As StreamReader = Nothing
Dim linea As String
Dim nombre As String
Console.WriteLine("Not enough parameters!")
Console.Write("Enter file name: ")
nombre = Console.ReadLine()
Try
ficheroEntrada = File.OpenText(nombre)
Catch e As Exception
Console.WriteLine(e.Message)
End Try
Try
Do
linea = ficheroEntrada.ReadLine()
If linea IsNot Nothing Then
Console.WriteLine()
Dim tableName As String = linea.Substring(12).Split(" "c)(0)
Dim campo As String() = linea.Substring(linea.IndexOf("(") + 1, linea.IndexOf(")") - linea.IndexOf("(") - 1).Split(","c)
Dim valores As String() = linea.Substring(linea.IndexOf("values (") + 9, linea.IndexOf(");") - linea.IndexOf("values (") - 9).Split(","c)
Console.WriteLine(tableName)
For i As Integer = 0 To campo.Length - 1
Console.Write(campo(i).Trim() & ": ")
Console.WriteLine(valores(i).Trim().Replace("'", ""))
Next
End If
Loop While linea IsNot Nothing
Catch e As Exception
Console.WriteLine(e.Message)
End Try
Console.ReadLine()
End Sub
End Class
End Namespace