2009-08-04 12 views
3

Ich brauche Textdateien als Datenquelle in SSRS. Ich habe versucht, mit der Verbindung 'OLEDB-Provider für Microsoft-Verzeichnisdienste' darauf zuzugreifen. Aber ich konnte nicht. Die Abfrage ist unten angegeben.Textdatei als Datenquelle in SSRS

Auch lassen Sie mich wissen, wie die Daten abzufragen

+0

Welche Antwort für Sie gearbeitet? –

Antwort

1

Ich glaube nicht, können Sie

Data Sources Supported by Reporting Services. In der Tabelle wäre Ihre einzige Chance "Generische ODBC-Datenquelle", jedoch ist eine Textdatei nicht ODBC-konforme AFAIK. Keine Typen, keine Struktur usw.

Warum nicht einfach die Textdateien anzeigen? Es scheint ein bisschen seltsam, Textdateien abzufragen, um sie in formatiertem HTML aufzublähen ...

+1

Sie könnten CSV- oder tabulatorgetrennte Textdateien sein, die ziemlich unschön angezeigt werden müssten, insbesondere wenn Sie Aggregate oder andere SQL-Funktionen verwenden möchten. – Eric

+0

@Eric: stimmt, aber in welcher Struktur könnten Sie aggregieren? – gbn

0

Ich bin nicht der Meinung, dass Sie können, aber eine Abhilfe dafür, wenn Ihre Textdateien CSVs oder dergleichen sind, ist um ein SSIS-Paket zu erstellen, das diese Daten in eine Tabelle in SQL Server bringt, die Sie dann abfragen können, als gäbe es kein Morgen. SSIS macht Flat File Sources mit Leichtigkeit.

Sie können dies sogar automatisieren, indem Sie mit der rechten Maustaste auf die Datenbank in SSMS klicken und Aufgaben-> Daten importieren ausführen. Durchlaufen Sie den Assistenten, und Sie können das Paket am Ende speichern.

2

Ich hatte großen Erfolg beim Erstellen von verknüpften Servern in SQL, um verschiedene Textdateien zum Erstellen von SSRS-Berichten zu verknüpfen. Im Folgenden finden Sie Beispiel-SQL zum Verknüpfen mit Ihren TXT-Dateien:

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‘, @ Local = NULL, @ rmtuser = NULL, @ rmtpassword = NULL

3

Ich weiß, dieser Thread ist alt, aber wie es in meinen Suchergebnissen kam, kann dies anderen Menschen helfen.

Es gibt zwei Arten von Problemumgehungen dafür. Auch die folgenden: http://www.sqlteam.com/forums/topic.asp?TOPIC_ID=130650

Also im Grunde sollten Sie OLEDB als Datenquelle verwenden, dann in der Verbindungszeichentyp:

Provider = Microsoft.Jet.OLEDB.4.0; Data Source = xxxx; Erweiterte Eigenschaften = "Text; HDR = Nein; FMT = Getrennt"

Dann stellen Sie sicher, dass Ihre Datei im .txt-Format mit Kommatrennzeichen gespeichert ist. Wo ich xxxx gesetzt habe, müssen Sie das FOLDER-Verzeichnis - also C: \ Temp - nicht auf die einzelne Dateiebene, sondern nur den Ordner, in dem es sich befindet, setzen.

In der Abfrage, die Sie für den Datensatz schreiben, Sie geben den Dateinamen so an, als ob es eine Tabelle wäre - im Wesentlichen ist Ihr Ordner Ihre Datenbank und die darin enthaltenen Dateien sind Tabellen.

Dank

0

ich einfach Bulkbefehl verwendet, um die Flat-Datei in eine temporäre Tabelle in SSRS, wie folgt zu laden:

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 
Verwandte Themen