2016-06-09 99 views
0

我有一個使用SSIS生成的文本文件。它有列分隔符「| @; @ |」而rowdelimiter是「\ r \ n | \ r \ n」。 我怎樣才能執行「OpenRowSet」查詢來獲得這個文本文件的特定列?帶自定義分隔符的OPENROWSET

下面

是我試圖執行

SELECT a.* FROM OPENROWSET(BULK 'C:\temp\filename.txt',FORMATFILE = 'C:\temp\filename.fmt') AS a; 

查詢和格式文件前三列如下。由於角色的限制不能在這裏發表的所有列數據

12.0 
32 
1  SQLCHAR    0  21  "|@;@|"  1  DimSiteID               "" 
2  SQLCHAR    0  21  "|@;@|"  2  DimActivityID              "" 
3  SQLCHAR    0  128  "|@;@|"  3  ActivityCategoryCode             Latin1_General_100_CS_AS_KS_WS_SC 

我得到如下錯誤:

消息4832,級別16,狀態1,行1 批量加載:在數據文件中遇到意外的文件結尾。 Msg 7399,Level 16,State 1,Line 1 鏈接服務器「(null)」的OLE DB提供程序「BULK」報告了錯誤。提供者沒有提供任何關於錯誤的信息。 Msg 7330,Level 16,State 2,Line 1 無法從鏈接服務器「(null)」的OLE DB提供程序「BULK」中獲取一行。

請幫忙找出錯誤在我的查詢

回答

0

最有可能的原因,這個問題可能是在csv文件和表格列有沒有列的不匹配。在例子中第一行有1列,第三行有2列...

+0

問題是我的源數據文件(文本文件)是unicode。我是否需要在openrowset查詢中添加任何內容以使其與unicode文本文件一起工作? – Radhi

+0

在note ++中打開(顯示所有字符模式)並檢查你的columndelimiter是否合適 –