Select Archivo Texto Openrowset

26/01/2008 - 01:57 por Miguel Soto | Informe spam
Como puedo hacer una consulta select con un archivo de texto utilizando
openrowset?
 

Leer las respuestas

#1 Alejandro Mesa
26/01/2008 - 22:14 | Informe spam
Miguel Soto,

Using Openrowset to query csv and tsv files
http://devrants.blog.com/1247632/

How to combine the results of two text files
http://www.databasejournal.com/feat..._3331881_3

How to read CSV File in SQL Server 2005 using OpenRowSet Function
http://forums.microsoft.com/MSDN/Sh...spx?PostID59168&SiteID=1

A mi personalmente me gusta usar "Microsoft Text Driver", principalmente
porque puedes tambien crear un archivo con las especificaciones sobre la
estructura de lo que contiene el archivo de texto. Este archivo debe tener el
nombre Schema.ini y su contenido depende de lo que contenga el archivo de
texto. Aca puedes encontrar las especificaciones de lo que puede contener.

Schema.ini File (Text File Driver)
http://msdn2.microsoft.com/en-us/li...09353.aspx

Veamos un ejemplo.

Supongamos que deseo ver el contenido de un archivo CSV desde SSMS. Este
archivo esta en C:\Temp y su nombre es Test.csv. Aca esta su contenido:

1,"SQL Server 2000"
2,"SQL Server 2005"
3,"SQL Server 2008"

En el mismo folder donde este se encuentra, creo el archivo Schema.ini con
la informacion sobre la estructura de Test.csv. En el pongo:

[Test.csv]
Format=CSVDelimited
CharacterSet=ANSI
ColNameHeader=False
MaxScanRows=0
Col1=ProductID Long
Col2=ProductName Text Width 50

- Nombre del archivo cuyo esquema se esta refiriendo
- Formato del archivo
- Conjunto de caracteres usado
- La primera fila no contiene el nombre de las columnas
- Que escanee todo el archivo para traer los valores
- La columna 1 se llama ProductID y es INT (Long en Access)
- La segunda columna es de caracteres y su largo es 50

Con esta informaciòn ya podemos usar desde SSMS o enterprise Manager, la
sgte sentencia:

SELECT * FROM
OPENROWSET ('MSDASQL', 'Driver={Microsoft Text Driver (*.txt;
*.csv)};DBQ=C:\Temp;', 'SELECT * from Test.csv');
GO

Resultado:

ProductID ProductName
1 SQL Server 2000
2 SQL Server 2005
3 SQL Server 2008

No solo eso, ademas podemos preguntar por el tipo de data que contiene el
archivo.

;WITH [test]
AS
(
SELECT
*
FROM
OPENROWSET ('MSDASQL', 'Driver={Microsoft Text Driver (*.txt;
*.csv)};DBQ=C:\Temp;', 'SELECT * from Test.csv')
)
SELECT DISTINCT
'ProductID' AS [col_name],
SQL_VARIANT_PROPERTY(CAST(ProductID AS SQL_VARIANT), 'BaseType') AS
[data_type],
NULL AS [Length]
FROM
[test]
UNION ALL
SELECT DISTINCT
'ProductName',
SQL_VARIANT_PROPERTY(CAST(ProductName AS SQL_VARIANT), 'BaseType'),
SQL_VARIANT_PROPERTY(CAST(ProductName AS SQL_VARIANT), 'MaxLength ')
FROM
[test]
GO


AMB

"Miguel Soto" wrote:

Como puedo hacer una consulta select con un archivo de texto utilizando
openrowset?

Preguntas similares