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

Reporting services 文本文件作为SSRS中的数据源,reporting-services,Reporting Services,我需要在SSRS中使用文本文件作为数据源。我尝试通过“用于Microsoft目录服务的OLEDB提供程序”连接访问此文件。但我不能。查询如下 另外,请告诉我如何查询数据我想您不能 。在表中,您唯一的机会是“通用ODBC数据源”,但是文本文件不是符合ODBC的AFAIK。没有类型,没有结构等 为什么不直接显示文本文件呢?查询文本文件以将其膨胀为格式化的HTML似乎有点奇怪…我不认为您可以,但如果您的文本文件是CSV或类似文件,则解决方法是创建一个SSIS包,将数据放入SQL Server中的表中,

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

另外,请告诉我如何查询数据

我想您不能

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


为什么不直接显示文本文件呢?查询文本文件以将其膨胀为格式化的HTML似乎有点奇怪…

我不认为您可以,但如果您的文本文件是CSV或类似文件,则解决方法是创建一个SSIS包,将数据放入SQL Server中的表中,然后您可以像没有明天一样进行查询。SSIS可以轻松地处理平面文件源


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

我在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

我知道这个线程很旧,但当它出现在我的搜索结果中时,这可能会帮助其他人

有两种“类似”的解决方法。见下文:

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

Provider=Microsoft.Jet.OLEDB.4.0;数据源=xxxx;扩展属性=“text;HDR=No;FMT=Delimited”

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

在为数据集编写的查询中,指定文件名就像它是一个表一样——实际上,文件夹是数据库,其中的文件是表


谢谢

我只是简单地使用批量插入命令将平面文件加载到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

它们可能是CSV或制表符分隔的文本文件,显示起来会很难看,尤其是当您希望应用聚合或其他SQL函数时。@Eric:是的,但您可以使用什么结构进行聚合?哪个答案适合您?