我有這樣的項目:如何導入文本文件並將數據保存到數據庫中?
- 導入
.txt
文件 - 連接到SQL Server數據庫
- 傳輸的所有數據存入數據庫
的文本文件由製表四個分字段以及數據庫。
我已經完成了使用富文本框並將所有數據保存在字符串中的第一步。我的想法是將每一行分割字符串並將其保存在數組中,但是:如何分割每一行以便我可以正確保存字段?如何將SQL Server上的數據庫連接到C#上的項目?
我有這樣的項目:如何導入文本文件並將數據保存到數據庫中?
.txt
文件的文本文件由製表四個分字段以及數據庫。
我已經完成了使用富文本框並將所有數據保存在字符串中的第一步。我的想法是將每一行分割字符串並將其保存在數組中,但是:如何分割每一行以便我可以正確保存字段?如何將SQL Server上的數據庫連接到C#上的項目?
讓我們來解決在這個時間一步...
獲取數據:
string readText = File.ReadAllText("path to my file.txt");
更多關於此here
現在,我們已經在一個字符串,我們可以在新行解析爲分裂它
List<string> listStrLineElements = List<string> listStrLineElements = line.Split(new string[] { Environment.NewLine }, StringSplitOptions.None).ToList();// You need using System.Linq at the top.
更多選擇,可以發現here
現在,你需要將每個元素分成它自己的行;你說你有這片分隔這是很好的(像逗號分隔(CSV)是較常見的現代,但標籤將工作!)......爲此,我們可以做這樣的事情:
List<string> rowList = listStrLineElements.SelectMany(s => s.Split('\t')).ToList();// The \t is an *escape character* meaning tab.
現在,你需要像一個循環的東西要經過這些條目中的每一個,並將其插入到數據庫中,這意味着我們現在需要我們的數據庫連接...
連接到數據庫
確保您使用的是SQL命名空間...
using System.Data.SqlClient;
private void sqlCon(List<string> x)
{
//Replace with your server credentials/info
SqlConnection myConnection = new SqlConnection("user id=username;" +"password=password;server=serverurl;" +"Trusted_Connection=yes;" +"database=database; " + "connection timeout=30");
try
{
myConnection.Open();
for (int i = 0; i <= x.Count -4; i += 4)//Implement by 3...
{
//Replace table_name with your table name, and Column1 with your column names (replace for all).
SqlCommand myCommand = new SqlCommand("INSERT INTO table_name (Column1, Column2, Column3, Column4) " +
String.Format("Values ('{0}','{1}','{2}','{3}')", x[i], x[i + 1], x[i + 2], x[i + 3]), myConnection);
myCommand.ExecuteNonQuery();
}
}
catch (Exception e){Console.WriteLine(e.ToString());}
try{myConnection.Close();}
catch (Exception e){Console.WriteLine(e.ToString());}
}
請注意,您可能很可能必須更改/編輯我的循環;它背後的邏輯是實現4乘以所以你可以閱讀你的每一列,所以列數(條目數)必須少於4,所以你不會得到一個索引越界(在記事本I中輸入這一切我不確定我是否擁有所有的邏輯,但是如果錯誤是您必須解決的問題,我們不會爲人們編寫代碼)。
請注意!
像string.format()這樣的東西讓你打開一個SQL注入,你真的應該查詢SQL參數,但這將完成工作。以下是我認爲一定要讀一些帖子:
您應該查看有關此主題的MSDN文檔here 這將提供有關如何連接到SQL Server數據庫的一些詳細信息。
要連接數據庫,您需要一個連接字符串,其中包含app.config文件中的所有信息。一旦你連接到數據庫,應該沒有問題添加一個新行,甚至更新你的代碼。只需構建一個查詢,您可以在其中爲新行的每一列輸入字符串數據。
有關於如何建立SQL查詢,以及如何連接到Microsoft網站上的數據庫一噸的文檔,給它看看:)
你可以嘗試使用BCP命令行。這使得一幫什麼權限你有,你如何訪問數據庫,但基本上你可以調用這個在數據庫服務器上(它是一個隱藏的功能),也可以本地複製文件的假設:
https://msdn.microsoft.com/en-us/library/ms162802.aspx
BCP.EXE ..在-S -U -P -c -t
-c是 「字符格式」 -t是字段終止 - 留空TAB
-U和-P可以如果它是可信連接,則用-T替換。
一些建議:通過導入到臨時表,進行所需的任何更改,然後使用SQL函數處理傳輸到生產表,可以更好地處理這些事情。這樣你可以確保你不會意外地吹走數據。
謝謝你很大的幫助。 只是一件事: for循環必須是「我<= x.Count」或它永遠不會保存最後一個條目,花了我一段時間來解決這個問題。 此外,首先連接「失敗」。這是連接,但沒有保存任何東西。我用「服務器=(本地);」 +「數據庫=名稱;」 +「Trusted_Connection = yes;」與所有的大寫和分號。另外,沒有用戶或角色,您發送給我的博客表示在使用可信連接時沒有必要,這是正確的。 再次感謝您以正確的方式帶領我。 –