Upload files to "PlaceablesDBA"
This commit is contained in:
commit
2037890c61
149
PlaceablesDBA/PlacablesDBA.cs
Normal file
149
PlaceablesDBA/PlacablesDBA.cs
Normal file
@ -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<string, int> 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<string, int> ExtractColumnFieldLengths(string line)
|
||||||
|
{
|
||||||
|
// Use regular expression to extract column names and field lengths
|
||||||
|
Dictionary<string, int> columnFieldLengths = new Dictionary<string, int>();
|
||||||
|
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<string> values = new List<string>();
|
||||||
|
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();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user