带自定义分隔符的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列...
问题是我的源数据文件(文本文件)是unicode。我是否需要在openrowset查询中添加任何内容以使其与unicode文本文件一起工作? – Radhi
在note ++中打开(显示所有字符模式)并检查你的columndelimiter是否合适 –