commit 2037890c617f98b6842f7952a55acf3ca0c0cc16 Author: LockOn Date: Wed May 22 00:00:17 2024 +0000 Upload files to "PlaceablesDBA" diff --git a/PlaceablesDBA/PlacablesDBA.cs b/PlaceablesDBA/PlacablesDBA.cs new file mode 100644 index 0000000..055e841 --- /dev/null +++ b/PlaceablesDBA/PlacablesDBA.cs @@ -0,0 +1,149 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Text.RegularExpressions; +using System.Text; +//using MySql.Data.MySqlClient; + +class Program +{ + static void Main(string[] args) + { + // Replace "path_to_your_file.txt" with the actual path to your text file + string filePath = "C:\\Users\\Freri\\Desktop\\Placeables\\placeables.2da"; + + try + { + string[] lines = File.ReadAllLines(filePath); + + if (lines.Length < 3) + { + Console.WriteLine("Invalid file format. File must contain at least 3 lines."); + return; + } + + // Extract column names and field lengths from the third line + Dictionary columnFieldLengths = ExtractColumnFieldLengths(lines[2]); + + // Create the CREATE TABLE command + string createTableCommand = "CREATE TABLE IF NOT EXISTS Placables_2da ("; + createTableCommand += "Plcb_ID BIGINT(10), "; // First field + + foreach (var column in columnFieldLengths) + { + createTableCommand += $"{column.Key} VARCHAR({column.Value}), "; + } + + createTableCommand = createTableCommand.TrimEnd(',', ' ') + ");"; + + Console.WriteLine(createTableCommand); + + // Assuming you have a MySQL connection established + /* using (MySqlConnection connection = new MySqlConnection("YourConnectionString")) + { + connection.Open(); + + // Create a MySqlCommand object + MySqlCommand command = new MySqlCommand(); + + // Set the connection for the command + command.Connection = connection; + + // Execute the CREATE TABLE command + command.CommandText = createTableCommand; + command.ExecuteNonQuery(); + */ + // Populate the table with data + for (int i = 3; i < lines.Length; i++) + { + string[] values = ParseLineValues(lines[i]); + + // Prepare the INSERT statement + StringBuilder insertCommand = new StringBuilder($"INSERT INTO YourTableName ("); + + foreach (var column in columnFieldLengths) + { + insertCommand.Append($"{column.Key}, "); + } + + insertCommand = insertCommand.Replace(", ", ") VALUES (", insertCommand.Length - 2, 2).Append(")"); + + for (int j = 0; j < values.Length; j++) + { + insertCommand.Append($"'{values[j]}', "); + } + + insertCommand = insertCommand.Remove(insertCommand.Length - 2, 2).Append(";"); + + //Console.Write(insertCommand); //Debug - to print the insert statement + //return; //Debug to stop the script after writing only a single line + + // Execute the INSERT statement + /*command.CommandText = insertCommand.ToString(); + command.ExecuteNonQuery();*/ + } + //} + } + catch (Exception ex) + { + Console.WriteLine($"An error occurred: {ex.Message}"); + } + } + + static Dictionary ExtractColumnFieldLengths(string line) + { + // Use regular expression to extract column names and field lengths + Dictionary columnFieldLengths = new Dictionary(); + Regex regex = new Regex(@"\b[A-Za-z]+\b"); + MatchCollection matches = regex.Matches(line); + + foreach (Match match in matches) + { + string columnName = match.Value; + int fieldLength = match.NextMatch().Index - match.Index; + if(match.NextMatch().Index == 0) + { + fieldLength = 11; + } + columnFieldLengths.Add(columnName, fieldLength); + } + + return columnFieldLengths; + } + static string[] ParseLineValues(string line) + { + List values = new List(); + bool inQuotes = false; + string currentVal = ""; + + foreach (char c in line) + { + if (c == '"') + { + inQuotes = !inQuotes; + currentVal += c; // Include the quote in the value + } + else if (c == ' ' && !inQuotes) + { + if (!string.IsNullOrEmpty(currentVal)) + { + values.Add(currentVal); + currentVal = ""; + } + } + else + { + currentVal += c; + } + } + + if (!string.IsNullOrEmpty(currentVal)) + { + values.Add($"\"{currentVal}\""); // Add double quotes to the beginning and end of the value + } + + return values.ToArray(); + } + + +}