SQL A Texto - Ejercicio De Programacion C# Sharp

En este ejercicio, debes crear un programa en C# capaz de analizar comandos SQL de tipo INSERT y extraer sus datos en líneas de texto separadas. El programa debe procesar un archivo de entrada que contenga los comandos SQL, como los siguientes ejemplos, y generar una salida que muestre los valores de los campos de manera estructurada y separada. Este ejercicio te permitirá trabajar con la manipulación de cadenas, el análisis de archivos y el procesamiento de comandos SQL.

 Categoría

Administración de Archivos

 Ejercicio

SQL A Texto

 Objectivo

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

 Ejemplo Ejercicio C#

 Copiar Código C#
// Importing necessary namespaces
using System;
using System.Collections.Generic;
using System.IO;
using System.Text.RegularExpressions;

class SqlToText
{
    // Main method where the program execution begins
    static void Main()
    {
        // Path to the input SQL file
        string inputFilePath = "input.sql";

        // Path to the output text file where the result will be saved
        string outputFilePath = "output.txt";

        // Call the ParseSqlInsert method to process the SQL file and extract the data
        ParseSqlInsert(inputFilePath, outputFilePath);
    }

    // Method to parse the SQL INSERT statements and extract the data into a text format
    static void ParseSqlInsert(string inputFilePath, string outputFilePath)
    {
        try
        {
            // Read the entire SQL file
            string sqlContent = File.ReadAllText(inputFilePath);

            // Regex pattern to match INSERT INTO SQL statements
            string insertPattern = @"INSERT INTO\s+`?(\w+)`?\s?\((.*?)\)\s+VALUES\s?\((.*?)\);";

            // Match all the INSERT statements in the SQL content
            var matches = Regex.Matches(sqlContent, insertPattern, RegexOptions.IgnoreCase);

            // List to store the formatted output
            List outputLines = new List();

            foreach (Match match in matches)
            {
                // Get the table name
                string tableName = match.Groups[1].Value;

                // Get the field names as a comma-separated list
                string fieldNames = match.Groups[2].Value;

                // Get the values to be inserted
                string values = match.Groups[3].Value;

                // Split the field names and values by commas
                string[] fields = fieldNames.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries);
                string[] valuesArray = values.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries);

                // Clean up extra spaces or quotes around field names and values
                for (int i = 0; i < fields.Length; i++)
                {
                    fields[i] = fields[i].Trim().Trim('`').Trim();
                    valuesArray[i] = valuesArray[i].Trim().Trim('\'', '"').Trim();
                }

                // Add the table name to the output
                outputLines.Add($"Table: {tableName}\n");

                // Add each field and its corresponding value to the output
                for (int i = 0; i < fields.Length; i++)
                {
                    outputLines.Add($"{fields[i]}: {valuesArray[i]}");
                }

                // Add a blank line after each record
                outputLines.Add("");
            }

            // Write the result to the output file
            File.WriteAllLines(outputFilePath, outputLines);

            Console.WriteLine("SQL has been parsed and saved to the output file.");
        }
        catch (Exception ex)
        {
            // Catch any errors (e.g., file not found or read/write issues) and display an error message
            Console.WriteLine("Error: " + ex.Message);
        }
    }
}

 Salida

input.sql file: Contains SQL INSERT INTO statements, for example:
INSERT INTO `users` (`id`, `name`, `age`) VALUES (1, 'John Doe', 30);
INSERT INTO `products` (`id`, `product_name`, `price`) VALUES (101, 'Laptop', 1200);
INSERT INTO `orders` (`id`, `user_id`, `product_id`, `quantity`) VALUES (1, 1, 101, 2);


output.txt file: After running the program, the extracted data will be written in a more readable text format. The content of output.txt will be:
Table: users

id: 1
name: John Doe
age: 30

Table: products

id: 101
product_name: Laptop
price: 1200

Table: orders

id: 1
user_id: 1
product_id: 101
quantity: 2


Console Message:
SQL has been parsed and saved to the output file.

Error Handling:
Error: error message

 Comparte este Ejercicio C# Sharp

 Más Ejercicios de Programacion C# Sharp de Administración de Archivos

¡Explora nuestro conjunto de ejercicios de programación C# Sharp! Estos ejercicios, diseñados específicamente para principiantes, te ayudarán a desarrollar una sólida comprensión de los conceptos básicos de C#. Desde variables y tipos de datos hasta estructuras de control y funciones simples, cada ejercicio está diseñado para desafiarte de manera gradual a medida que adquieres confianza en la codificación en C#.

  •  Visor PGM

    El formato PGM es una de las versiones de los formatos de imagen NetPBM. Específicamente, es la variante capaz de manejar imágenes en tonos de gris. Su encabezado comienza con una ...

  •  Mostrar BMP en la consola V2

    En este ejercicio, se te solicita desarrollar un programa en C# que pueda mostrar un archivo BMP de tamaño 72x24 en la consola. Para ello, deberás utilizar la ...

  •  Escribir en un archivo de texto

    En este ejercicio de C#, se debe crear un programa que pida al usuario ingresar varias oraciones (hasta que presione Enter sin escribir nada) y almacene dichas oracio...

  •  Anexar a un archivo de texto

    En este ejercicio de C#, se debe crear un programa que pida al usuario ingresar varias oraciones (hasta que presione Enter sin escribir nada) y almacene esas oracione...

  •  Mostrar el contenido del archivo

    ejercicio de C#, se debe crear un programa que muestre todo el contenido de un archivo de texto en la pantalla. El nombre del archivo será ingresado a través de la lí...

  •  Expandir TextToHTML (archivos)

    En este ejercicio de C#, se debe expandir la clase TextToHtml para que pueda volcar su resultado en un archivo de texto. Se debe crear un método ToFile,...