文本文件作为SSRS中的数据源

时间:2009-08-04 10:13:43

标签: reporting-services

我需要在SSRS中使用文本文件作为数据源。我尝试使用“用于Microsoft目录服务的OLEDB提供程序”连接来访问它。但我不能。查询如下。

另请告诉我如何查询数据

5 个答案:

答案 0 :(得分:3)

我知道这个帖子已经过时了,但是在我的搜索结果中出现这可能对其他人有帮助。

这有两种“解决方法”。请参阅以下内容: http://www.sqlteam.com/forums/topic.asp?TOPIC_ID=130650

所以基本上你应该使用OLEDB作为数据源,然后在连接字符串类型中使用:

Provider = Microsoft.Jet.OLEDB.4.0; Data Source = xxxx; Extended Properties =“text; HDR = No; FMT = Delimited”

然后确保您的文件以.txt格式保存,并带有逗号分隔符。在我放置xxxx的地方你需要放置FOLDER目录 - 所以C:\ Temp - 不要归结到单个文件级别,只是它所在的文件夹。

在为数据集编写的查询中,您将文件名指定为表格 - 实际上您的文件夹是您的数据库,其中的文件是表格。

由于

答案 1 :(得分:2)

我在SQL中创建链接服务器以链接到用于创建SSRS报告的不同文本文件方面取得了巨大成功。下面是链接到txt文件的示例SQL:

EXEC master.dbo.sp_addlinkedserver @server = N'',@ srvproduct = N'',@ provider = N'Microsoft.Jet.OLEDB.4.0',@ datasrc = N'',@ provstr = N'text “

EXEC master.dbo.sp_addlinkedsrvlogin @ rmtsrvname = N'YourLinkedServerName',@ useself = N'False',@ locallogin = NULL,@ rmtuser = NULL,@ rmtpassword = NULL

答案 2 :(得分:1)

我认为你不能

Data Sources Supported by Reporting Services。在表中,您唯一的机会是“通用ODBC数据源”,但文本文件不符合ODBC的AFAIK。没有类型,没有结构等。

为什么不显示文本文件?查询文本文件以将它们扩展为格式化的HTML似乎有点奇怪......

答案 3 :(得分:1)

我只是使用BULK INSERT命令将平面文件加载到SSRS中的临时表中,如下所示:

CREATE TABLE #FlatFile
(
    Field1 int,
    Field2 varchar(10),
    Field3 varchar(15),
    Field4 varchar(20),
    Field5 varchar(50)
)

BEGIN TRY
BULK INSERT #FlatFile
   FROM 'C:\My_Path\My_File.txt'
   WITH   
      (  
         FIELDTERMINATOR ='\t',   -- TAB delimited
         ROWTERMINATOR ='\n',     -- or '0x0a' (whatever works)
         FIRSTROW = 2,            -- has 1 header row
         ERRORFILE = 'C:\My_Path\My_Error_File.txt',
         TABLOCK
      );  
END TRY
BEGIN CATCH
  -- do nothing (prevent the query from aborting on errors...)
END CATCH

SELECT * FROM #FlatFile

答案 4 :(得分:0)

我不介意你可以,但如果您的文本文件是CSV等,则解决此问题的方法是创建一个SSIS包,将该数据放入SQL Server中的表中,您可以然后查询就像没有明天一样。 SSIS轻松完成平面文件源。

您甚至可以通过右键单击SSMS中的数据库,执行任务 - >导入数据来自动执行此操作。浏览向导,然后可以在最后保存包。