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 INSERT
uż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 OPENROWSET
i 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 Format
pod HKLM\Software\Microsoft\Office\12.0\Access Connectivity Engine\Engines\Text
od CSVDelimited
celu TabDelimited
na 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=TabDelimited
w OPENROWSET
nie 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 Text
kluczy rejestru zarówno z kluczy, jak Engines
i ISAM Formats
do niestandardowych ustawień domyślnych TabDelimited
, jednak nadal odczytuje pliki CSVFormat
w TabDelimited
formacie 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
.bak
zwykłym rozszerzeniem z ogranicznikami, a błąd, który podał mi przy pierwszej próbie, jest Could not find installable ISAM
taki, więc nie sądzę, aby to zadziałało.