我需要在SSRS中使用文本文件作为数据源。我尝试使用“用于Microsoft目录服务的OLEDB提供程序”连接来访问它。但我不能。查询如下。
另请告诉我如何查询数据
答案 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中的数据库,执行任务 - >导入数据来自动执行此操作。浏览向导,然后可以在最后保存包。