带自定义分隔符的OPENROWSET

问题描述:

我有一个使用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”中获取一行。

请帮忙找出错误在我的查询

最有可能的原因,这个问题可能是在csv文件和表格列有没有列的不匹配。在例子中第一行有1列,第三行有2列...

+0

问题是我的源数据文件(文本文件)是unicode。我是否需要在openrowset查询中添加任何内容以使其与unicode文本文件一起工作? – Radhi

+0

在note ++中打开(显示所有字符模式)并检查你的columndelimiter是否合适 –