Excel Dateien mit SQL auswerten

Posted in Allgemein, SQL Server on November 11th, 2009 by Andreas Schwarz

Excel Query

Excel 97 – 2003

SELECT

     [ID], -- Excel Spalte 1
     [Text] -- Excel Spalte 2

FROM

     OPENDATASOURCE('Microsoft.Jet.OLEDB.4.0',
     'Data Source=C:\test.xls;Extended Properties=Excel 8.0')
     ...[Tabelle1$] -- Tabellenblatt

ORDER BY

[ID] DESC

Excel 2007:

Um die Funktionalität auch bei .xslx-Dateien nutzen zu können, muß folgende Komponente auf dem System installiert sein:
2007 Office System Driver: Data Connectivity Components
 

SELECT
	*
FROM
	OPENDATASOURCE(
		'Microsoft.ACE.OLEDB.12.0',
		'Data Source=C:\test.xlsx;Extended Properties=Excel 12.0')
		...[Tabelle1$]

Leider funktioniert das Ganze aktuell nur auf 32-Bit Systemen, da die entsprechenden Provider auf 64-Bit Systemen derzeit nicht zur Verfügung gestellt werden.

Tags: , ,

X-Server SQL Query Template mit OPENROWSET

Posted in SQL Server on November 4th, 2009 by Andreas Schwarz
SELECT * FROM OPENROWSET
      ('MSDASQL', 'DRIVER={SQL Server};SERVER=zensiert;UID=zensiert;PWD=zensiert,
      Testdatenbank.Schema.TestTabelle) 

      WHERE ...

Um dieses Feature nutzen zu können muss folgendes Setting aktiviert sein

EXEC sp_configure 'Ad Hoc Distributed Queries', '1' RECONFIGURE

http://technet.microsoft.com/de-de/library/ms187569.aspx

Tags: ,

SQL Cursor Template

Posted in SQL Server on November 4th, 2009 by Andreas Schwarz
DECLARE @lastname varchar(100)
DECLARE @firstname varchar(100)

DECLARE query_cursor CURSOR FOR

	SELECT
		LastName,
		FirstName
	FROM
		T_AddressData
	ORDER BY
		PK_AddressData

OPEN query_cursor

FETCH NEXT FROM query_cursor
INTO @lastname, @firstname

PRINT '---------- Results ----------'

WHILE @@FETCH_STATUS = 0
BEGIN
	PRINT (@lastname + ' ' + @firstname)

	FETCH NEXT FROM query_cursor
	INTO @lastname, @firstname
END

CLOSE query_cursor
DEALLOCATE query_cursor
Tags: ,

Rekursive SQL Queries – Common Table Expression

Posted in SQL Server on November 2nd, 2009 by Andreas Schwarz

CTE Rekursion – Sample
 
rec_result

WITH TEMP (Pk, Parent_Pk, Title, Name, Iteration) AS
(
  SELECT Pk_JobStruct, Fk_Parent, Title, Name, 0
  FROM T_JobStruct
  WHERE PK_JobStruct = 1 -- el cheffe
 
 UNION ALL
 
  SELECT sub.Pk_Jobstruct, sub.Fk_Parent, sub.Title, sub.Name, (t.Iteration + 1)
  FROM T_JobStruct AS sub, temp AS t
  WHERE t.Pk = sub.Fk_Parent
 
)

SELECT * FROM Temp

rec_cte_queryresult

Tags: , ,