[英]How can I insert each line from txt file into separate rows in a SQL Server database?
我有一個文本文件,其中包含字典中的單詞。
ABACA
ABACHI
ABACHISTA
ABACO
ABADESSA
ABADIA
ABALIETA
ABARICA
現在,我要做的是將此列表從文本文件插入到SQL Server表中。 我可能無法手動添加引號。 我認為這樣做的一種方法是將其復制粘貼到Excel工作表中,然后將其導入或添加引號,但是Excel工作表中的工作表中有65k行,並且此文本文件中的單詞數量更多。 那么如何輕松地做到這一點呢? 我正在使用SQL Server 2008。
您可以使用T-SQL輕松地批量導入包含多個單詞的大文件-只需創建一個表,該表的類型為varchar
類型,長度足以容納最長的字符串,然后批量插入數據。
嘗試使用T-SQL語句,如下所示:
CREATE TABLE ImportedWordList(Word VARCHAR(200) )
BULK INSERT ImportedWordList
FROM 'c:\temp\listofwords.txt'
WITH
(ROWTERMINATOR = '\n')
GO
SELECT * FROM dbo.ImportedWordList
在我有限的測試中,它的工作原理就像一個魅力(大約需要20秒才能將超過一百萬個單詞的列表加載到該表中)。
使用C#標記問題后,只需使用:
var allLines = File.ReadAllLines(filepath);
要獲取所有行,使用foreach
在所有行上運行,並使用您想將其插入數據庫的任何方式,可以使用:
using (var con = new SqlConnection(connectionString))
{
foreach (var line in allLines)
{
using (var cmd = con.CreateCommand())
{
cmd.CommandText = "INSERT INTO [YourTable] ([YourColumn]) VALUES (:val)";
var param = cmd.CreateParameter();
param.ParameterName = ":val";
param.Value = line;
cmd.ExecuteNonQuery();
}
}
}
我還沒有測試過,但這很簡單,沒有太多麻煩就可以成功。
我猜想最好是在單個命令中發送所有插入,但這只是一個POC
這可能是一個例子。
string str = null;
StreamReader sr = new StreamReader(YourTextFilePath);
using (var con = new SqlConnection(YourConnectionString))
{
while ( (str = sr.ReadLine()) != null)
{
cmd = new SqlCommand("Insert into table_name values ('" + str + "')", con);
cmd.ExecuteNonQuery();
cmd.Dispose();
}
}
我的代碼可能是錯誤的/效率低下。 因此,隨時糾正我。 ;)
從'文件路徑'WITH(ROWTERMINATOR ='\\ n')批量插入TABLE_NAME
* 提供路徑時,應提供服務器路徑,否則查詢將出錯*
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.