Có thể truy vấn một tệp được phân định bằng tab từ Sql Server Management Studio để xem dữ liệu của nó mà không lưu nó ở bất cứ đâu không?
Tôi biết bạn có thể BULK INSERT
từ một tệp được phân định bằng tab bằng cách sử dụng một cái gì đó như:
BULK INSERT SomeTable
FROM 'MyFile.txt'
WITH (
FIELDTERMINATOR = '\t',
ROWTERMINATOR = '\n');
tuy nhiên, điều đó đòi hỏi bạn phải biết trước các cột và tạo một bảng để chứa dữ liệu.
Tôi cũng biết bạn có thể truy vấn một số loại tệp khác như CSV hoặc Excel mà không cần xác định trước các cột bằng cách sử dụng OPENROWSET
và trình điều khiển Excel, chẳng hạn như:
-- 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$]')
Ngoài ra, nếu tôi thay đổi các khóa registry Format
dưới HKLM\Software\Microsoft\Office\12.0\Access Connectivity Engine\Engines\Text
từ CSVDelimited
để TabDelimited
trên SQL Server, truy vấn CSV trên sẽ đọc một cách chính xác một file văn bản tab-delimited, tuy nhiên nó sẽ không còn đọc một file văn bản dấu phẩy phân cách vì vậy tôi không nghĩ rằng tôi muốn để nó như thế
Cố gắng sử dụng Format=TabDelimited
trong OPENROWSET
cũng không hoạt động
SELECT *
FROM OPENROWSET('Microsoft.ACE.OLEDB.12.0',
'Text;Database=\\Server\Folder\;HDR=Yes;Format=TabDelimited',
'SELECT * FROM MyFile.txt')
Tôi đã thực hiện một số nỗ lực để sao chép các Text
khóa đăng ký từ cả khóa Engines
và ISAM Formats
khóa sang thứ gì đó tùy chỉnh mặc định TabDelimited
, tuy nhiên nó vẫn đang đọc các tệp CSVFormat
thay vì TabDelimited
định dạng nên tôi phải thiếu một cái gì đó ở đây.
Có cách nào để truy vấn một tệp được phân định bằng tab để xem nội dung của nó mà không phải tạo bảng và BULK INSERT
nó không?
Tôi đang sử dụng SQL Server 2005
.bak
không phải là phần mở rộng tệp được phân tách thông thường và lỗi mà tôi đã gặp trong lần thử đầu tiên là Could not find installable ISAM
do đó tôi không nghĩ rằng nó sẽ hoạt động.