我可以從 SSMS 查詢製表符分隔的文件嗎?
是否可以從 Sql Server Management Studio 查詢製表符分隔的文件以查看其數據而不將其保存在任何地方?
我知道您可以
BULK INSERT
使用以下內容從製表符分隔的文件中:BULK INSERT SomeTable FROM 'MyFile.txt' WITH ( FIELDTERMINATOR = '\t', ROWTERMINATOR = '\n');
但是,這需要您提前知道列並創建一個表來保存數據。
我也知道您可以查詢其他一些文件類型,例如 CSV 或 Excel,而無需預先使用
OPENROWSET
Excel 驅動程序定義列,例如:-- 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$]')
此外,如果我在 SQL Server 上將系統資料庫項更改為
Format
fromHKLM\Software\Microsoft\Office\12.0\Access Connectivity Engine\Engines\Text
,CSVDelimited
上面TabDelimited
的 CSV 查詢將正確讀取製表符分隔的文本文件,但是它將不再讀取逗號分隔的文本文件,所以我不認為我想要就這樣離開它。嘗試在中使用
Format=TabDelimited
也OPENROWSET
不起作用SELECT * FROM OPENROWSET('Microsoft.ACE.OLEDB.12.0', 'Text;Database=\\Server\Folder\;HDR=Yes;Format=TabDelimited', 'SELECT * FROM MyFile.txt')
我已經嘗試將
Text
系統資料庫項從Engines
和ISAM Formats
鍵複製到預設為 的自定義項TabDelimited
,但是它仍在讀取文件CSVFormat
而不是TabDelimited
格式,所以我必須在這裡遺漏一些東西。有沒有辦法查詢製表符分隔的文件以查看其內容而無需創建表和
BULK INSERT
它?我正在使用 SQL Server 2005
您必須在與您打開的文本文件相同的目錄中創建一個包含分隔符的 schema.ini 文件。這是基於每個文件覆蓋系統資料庫值的唯一方法。請參閱MSDN上的文件格式文件。例子:
SELECT * FROM OPENROWSET( 'Microsoft.ACE.OLEDB.12.0', 'Text; HDR=YES; Database=C:\Text', 'SELECT * FROM testupload2.txt')
在 C:\Text\schema.ini 中:
[testupload2.txt] ColNameHeader=True Format=TabDelimited MaxScanRows=0
如果需要經常重複此活動,我建議使用腳本來創建 schema.ini。多個文件可以在同一個 schema.ini 中引用,或者單獨的 schema.ini 可以包含在其自己目錄中的每個文本文件中。