Czy możliwe jest zapytanie pliku rozdzielanego tabulatorami z Sql Server Management Studio, aby wyświetlić jego dane bez zapisywania go w dowolnym miejscu?
Wiem, że możesz BULK INSERTużyć pliku rozdzielanego tabulatorami, używając czegoś takiego:
BULK INSERT SomeTable
FROM 'MyFile.txt'
WITH (
FIELDTERMINATOR = '\t',
ROWTERMINATOR = '\n');
wymaga to jednak wcześniejszej znajomości kolumn i utworzenia tabeli do przechowywania danych.
Wiem również, że możesz przesyłać zapytania do niektórych innych typów plików, takich jak CSV lub Excel, bez wcześniejszego zdefiniowania kolumn OPENROWSETi sterowników Excel, takich jak:
-- 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$]')
Ponadto, w przypadku zmiany klucza rejestru Formatpod HKLM\Software\Microsoft\Office\12.0\Access Connectivity Engine\Engines\Textod CSVDelimitedcelu TabDelimitedna serwerze SQL, zapytanie CSV powyżej będzie prawidłowo odczytać plik tekstowy tabulatorami, jednak nie będzie już odczytać plik tekstowy rozdzielany przecinkami więc nie sądzę, chcę tak to zostawić.
Próba użycia Format=TabDelimitedw OPENROWSETnie działa również
SELECT *
FROM OPENROWSET('Microsoft.ACE.OLEDB.12.0',
'Text;Database=\\Server\Folder\;HDR=Yes;Format=TabDelimited',
'SELECT * FROM MyFile.txt')
Podjąłem kilka prób skopiowania Textkluczy rejestru zarówno z kluczy, jak Enginesi ISAM Formatsdo niestandardowych ustawień domyślnych TabDelimited, jednak nadal odczytuje pliki CSVFormatw TabDelimitedformacie zamiast formatu, więc tutaj czegoś mi brakuje.
Czy istnieje sposób zapytania o plik rozdzielany tabulatorami w celu wyświetlenia jego zawartości bez konieczności tworzenia tabeli i pliku BULK INSERT?
Używam SQL Server 2005
.bakzwykłym rozszerzeniem z ogranicznikami, a błąd, który podał mi przy pierwszej próbie, jest Could not find installable ISAMtaki, więc nie sądzę, aby to zadziałało.