È possibile eseguire una query su un file delimitato da tabulazioni da Sql Server Management Studio per visualizzare i suoi dati senza salvarli da nessuna parte?
So che puoi farlo BULK INSERT
da un file delimitato da tabulazioni usando qualcosa del tipo:
BULK INSERT SomeTable
FROM 'MyFile.txt'
WITH (
FIELDTERMINATOR = '\t',
ROWTERMINATOR = '\n');
tuttavia ciò richiede la conoscenza anticipata delle colonne e la creazione di una tabella per contenere i dati.
So anche che puoi interrogare alcuni altri tipi di file come CSV o Excel senza definire in anticipo le colonne utilizzando OPENROWSET
e i driver di Excel, come:
-- 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$]')
Inoltre, se cambio la chiave di registro Format
in HKLM\Software\Microsoft\Office\12.0\Access Connectivity Engine\Engines\Text
da CSVDelimited
a TabDelimited
su SQL Server, la query CSV sopra leggerà correttamente un file di testo delimitato da tabulazioni, tuttavia non leggerà più un file di testo delimitato da virgole, quindi non credo di volerlo per lasciarlo così.
Anche il tentativo di utilizzare Format=TabDelimited
in OPENROWSET
non funziona
SELECT *
FROM OPENROWSET('Microsoft.ACE.OLEDB.12.0',
'Text;Database=\\Server\Folder\;HDR=Yes;Format=TabDelimited',
'SELECT * FROM MyFile.txt')
Ho fatto alcuni tentativi di copiare le Text
chiavi del Registro di sistema da entrambe le chiavi Engines
e ISAM Formats
su qualcosa di personalizzato che viene impostato per impostazione predefinita TabDelimited
, tuttavia continua a leggere i file CSVFormat
anziché il TabDelimited
formato, quindi qui mi manca qualcosa.
C'è un modo per interrogare un file delimitato da tabulazioni per visualizzarne il contenuto senza dover creare una tabella e BULK INSERT
esso?
Sto usando SQL Server 2005
.bak
che non è una normale estensione delimitata, e l'errore che mi ha dato al mio primo tentativo è Could not find installable ISAM
, quindi non penso che funzionerà.