[英]C# script to convert first line of txt document into a create table statement for SQL Server
因此,每當我需要分析一個新的文本文件時,我就不得不使用導入向導從一個新的TXT選項卡分隔的文件中創建一個表,這讓我感到厭煩。 我所做的大部分工作都是粗略的數據分析,但是我對訪問SQL感到厭倦,並且文檔有時足夠大,以至於Excel分析不會削減它。 我還沒有找到一種將多個文件中的數據快速導入SQL Server的好方法。 我知道批量導入 ,但是據我所知,您需要一個已經制成的表格才能使用它。 我的文本文件總是不同的,所以我不能只創建一個通用表並重新創建它。
我正在編寫一個C#代碼,希望最終將獲得一個文件路徑,並復制該路徑中每個文本文件的副本,並將其切成每個文檔的第一個{CR} {LF},定義我的定界符'\\ t'', ''|' 等等,並為路徑中的每個文件創建一個create table語句。 我想這樣做,然后就可以對每個文件進行簡單的批量導入並完成。
這是我到目前為止的內容:我正在嘗試使其在單個選項卡定界文件中工作
private void button4_Click(object sender, EventArgs e)
{
string pathOfFile = textBox2.Text;
string origFileText = File.ReadAllText(pathOfFile);
int intIndexofCRLF = origFileText.IndexOf(Environment.NewLine);
string strIndexfCRLF = intIndexofCRLF.ToString();
string strJustHeader = origFileText.Substring(0, intIndexofCRLF);
string[] splitarray = strJustHeader.Split('\t');
string tablename = textBox3.Text;
string SQLPart1 = "CREATE TABLE " + tablename + "( ";
string sqlbody = "";
for (int i = 0; i < splitarray.Length; i++)
{
sqlbody = sqlbody + "[" + splitarray[i] + "] " + "varchar(255), " ;
}
string SQLpart2 = sqlbody.Substring(0, sqlbody.Length - 1);
string SQLPart3 = ");"
MessageBox.Show(SQLPart1 + SQLPart2 + SQLPart3);
}
由於某種原因,執行此操作時我的陣列混亂了。
我的輸入是D:\\ newtext.txt
abd abc ans azd
1 2 3 4
我想要的輸出是
創建表newtext(abd varchar(255),abc varchar(255),ans varchar(255),azd varchar(255));
謝謝您的幫助!
我將在此代碼中改進幾件事:
以下是包含這些改進的示例代碼:
string tableName = "myTable";
string delimeter = " ";
string line = null;
using (Stream stream = File.OpenRead("FilePath"))
using (StreamReader sr = new StreamReader(stream))
{
line = sr.ReadLine();
}
string fileHeader = line.Replace("\r", string.Empty).Replace("\n", string.Empty);
string[] fileHeaderSegments = fileHeader.Split(new string[] { delimeter }, StringSplitOptions.None);
StringBuilder sb = new StringBuilder(string.Format("CREATE TABLE {0} (", tableName));
for (int i = 0; i < fileHeaderSegments.Length; i++)
{
if (i != 0)
{
sb.Append(",");
}
sb.Append(fileHeaderSegments[i]);
sb.Append(" varchar(255)");
}
sb.Append(");");
Console.WriteLine(sb.ToString());
Console.ReadKey();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.