簡體   English   中英

如何將txt文件中的每一行插入到SQL Server數據庫的單獨行中?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM