2010-11-02 72 views
0

什麼是最簡單的方法 - 最好是使用SQL Server Management Studio - 從文件中將文本插入到Text類型列(text, ntext, varchar(max), nvarchar(max))中。從文件中插入文本到文本列

說一個有一個表

textFileContent(id, textData) 

,並希望做

insert into textFileContent(textData) 
values([data read from a file, complete file content]) 

而且,是有可能做更新以類似的方式?例如。

update textFileContent 
set textData = [data read from a file, complete file content] 
where id = 1 
+1

改用SSIS/DTS? – brumScouse 2010-11-02 16:59:45

+1

從SQL Server 2005開始,TEXT,NTEXT,IMAGE是**棄用的** - 如果可能的話,應儘量避免使用它們(尤其是如果您創建新的東西的話)。 – 2010-11-02 17:00:07

回答

0

答案取決於您的使用案例。我猜你需要在項目開始時加載數據......如果你需要將數據「饋入」SQL服務器,那麼我會有一個不同的答案。

這是最簡單的選擇:

  • 格式化文本文件,所以它是一個SQL語句。例如,如果你有一行文本想要插入名爲表的名字,你可以在每行的開始處輸入insert into names value(',最後輸入')。然後複製並將其過濾到管理器中並運行它。

  • 使用BULK INSERT(link

  • 使用SSIS/DTS(link

+0

感謝霍根,所以假設我有服務器上的文件說c:\ testFile.txt將完整的內容上傳到單個行我該怎麼做:「從'c:\ r781.txt'批量插入txtFileContent'」? – padn 2010-11-02 17:34:07

+0

在這種情況下,我個人只會修改文件並在管理器中運行它 - 我總是必須使用試驗和錯誤才能使批量插入工作。去做。首先製作你的表格的副本,然後測試,直到它開始工作爲止。 – Hogan 2010-11-02 17:36:57

+0

在有多個字段的非常大的文件上,我對SSIS和XML取得了很多成功。 – 2010-11-02 18:00:34

0

您可以使用OPENROWSET一個文本文件導入數據。但是,爲此,您可能還必須定義格式文件。你可以找到更多的幫助here

1

你可以使用xp_cmdshell的:

create table #mytable 
(
    id int IDENTITY(1,1) NOT NULL, 
    result nvarchar(MAX) NULL 
) 

insert into #mytable (result) 
exec xp_cmdshell 'type c:\somefile.txt' -- this may require cmd before it 

這應該轉儲到表,其中硬回車表示新記錄的文字。

否則,如果您有SQL Express,則僅限於BCP和BULK INSERT。如果您先創建表格以生成格式文件,則BCP中有命令。請記住,如果您的分隔符是Unicode,那麼您的分隔符是兩個字符\n\0\r\0(或類似的內容)

否則,如果您有SQL標準或以上版本,則可以使用SSIS。您可以創建數據流,爲輸入文本文件放置圖標,放下目標表的圖標,然後單擊播放。爲了使這個工作與SQL,你需要用類似上面的xp_cmdshell來調用它。就文本文件而言,SSIS是您將使用BCP做什麼的視覺效果。