¿Es posible consultar un archivo delimitado por tabulaciones de Sql Server Management Studio para ver sus datos sin guardarlos en ningún lado?
Sé que puedes BULK INSERT
desde un archivo delimitado por tabulaciones usando algo como:
BULK INSERT SomeTable
FROM 'MyFile.txt'
WITH (
FIELDTERMINATOR = '\t',
ROWTERMINATOR = '\n');
sin embargo, eso requiere que conozca las columnas de antemano y cree una tabla para contener los datos.
También sé que puede consultar algunos otros tipos de archivos, como CSV o Excel, sin definir las columnas por adelantado OPENROWSET
y los controladores de Excel, como:
-- Query CSV
SELECT *
FROM OPENROWSET('Microsoft.ACE.OLEDB.12.0',
'Text;Database=\\Server\Folder\;HDR=Yes;',
'SELECT * FROM MyFile.csv')
-- Query Excel
SELECT *
FROM OPENROWSET('Microsoft.Ace.OLEDB.12.0',
'Excel 8.0;Database=MyFile.xls',
'SELECT * FROM [Sheet1$]')
Además, si cambio la clave de registro Format
debajo HKLM\Software\Microsoft\Office\12.0\Access Connectivity Engine\Engines\Text
de CSVDelimited
a TabDelimited
en SQL Server, la consulta CSV anterior leerá correctamente un archivo de texto delimitado por tabulaciones, sin embargo, ya no leerá un archivo de texto delimitado por comas, así que no creo que quiera dejarlo así
Intentar usar Format=TabDelimited
en el OPENROWSET
tampoco funciona
SELECT *
FROM OPENROWSET('Microsoft.ACE.OLEDB.12.0',
'Text;Database=\\Server\Folder\;HDR=Yes;Format=TabDelimited',
'SELECT * FROM MyFile.txt')
He hecho algunos intentos de copiar las Text
claves de registro de las claves Engines
y ISAM Formats
a algo personalizado que está predeterminado TabDelimited
, sin embargo, todavía está leyendo archivos con en CSVFormat
lugar de TabDelimited
formato, por lo que me falta algo aquí.
¿Hay alguna manera de consultar un archivo delimitado por tabuladores para ver su contenido sin tener que crear una tabla BULK INSERT
?
Estoy usando SQL Server 2005
fuente
.bak
no es una extensión de archivo delimitada normal, y el error que me dio en mi primer intento esCould not find installable ISAM
, así que no creo que esto funcione.Respuestas:
Debe crear un archivo schema.ini que contenga el delimitador en el mismo directorio que el archivo de texto que está abriendo. Esta es la única forma de anular los valores del registro por archivo. Consulte la documentación del formato de archivo en MSDN . Ejemplo:
En C: \ Text \ schema.ini:
Si esta actividad necesita repetirse con frecuencia, sugeriría un script para crear schema.ini. Se puede hacer referencia a varios archivos en el mismo schema.ini o se puede incluir un schema.ini separado con cada archivo de texto en su propio directorio.
fuente