Apakah mungkin untuk meminta file yang dibatasi tab dari Sql Server Management Studio untuk melihat datanya tanpa menyimpannya di mana saja?
Saya tahu Anda dapat BULK INSERT
dari file tab-dibatasi menggunakan sesuatu seperti:
BULK INSERT SomeTable
FROM 'MyFile.txt'
WITH (
FIELDTERMINATOR = '\t',
ROWTERMINATOR = '\n');
namun itu mengharuskan Anda mengetahui kolom sebelumnya dan membuat tabel untuk menyimpan data.
Saya juga tahu Anda dapat meminta beberapa tipe file lain seperti CSV atau Excel tanpa mendefinisikan kolom sebelumnya menggunakan OPENROWSET
dan driver Excel, seperti:
-- 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$]')
Juga, jika saya mengubah kunci registri di Format
bawah HKLM\Software\Microsoft\Office\12.0\Access Connectivity Engine\Engines\Text
dari CSVDelimited
ke TabDelimited
pada SQL Server, permintaan CSV di atas akan dengan benar membaca file teks yang dibatasi tab, namun itu tidak akan lagi membaca file teks yang dibatasi koma sehingga saya tidak berpikir saya ingin meninggalkannya seperti itu.
Mencoba menggunakan Format=TabDelimited
di OPENROWSET
tidak berhasil juga
SELECT *
FROM OPENROWSET('Microsoft.ACE.OLEDB.12.0',
'Text;Database=\\Server\Folder\;HDR=Yes;Format=TabDelimited',
'SELECT * FROM MyFile.txt')
Saya telah melakukan beberapa upaya untuk menyalin Text
kunci registri dari kedua Engines
dan ISAM Formats
kunci untuk sesuatu yang kustom untuk default TabDelimited
, namun masih membaca file dengan CSVFormat
bukan TabDelimited
format jadi saya harus kehilangan sesuatu di sini.
Apakah ada cara untuk meminta file dibatasi-tab untuk melihat isinya tanpa harus membuat tabel dan BULK INSERT
itu?
Saya menggunakan SQL Server 2005
sumber
.bak
yang bukan ekstensi file terbatas normal, dan kesalahan itu memberi saya pada percobaan pertama saya adalahCould not find installable ISAM
, jadi saya tidak berpikir ini akan berhasil.Jawaban:
Anda harus membuat file schema.ini yang berisi pembatas di direktori yang sama dengan file teks yang Anda buka. Ini adalah satu-satunya cara untuk mengganti nilai registri berdasarkan per-file. Lihat dokumentasi format file di MSDN . Contoh:
Dalam C: \ Text \ schema.ini:
Jika kegiatan ini perlu sering diulang, saya akan menyarankan skrip untuk membuat schema.ini. Beberapa file dapat direferensikan dalam schema.ini yang sama atau schema.ini terpisah dapat dimasukkan dengan setiap file teks dalam direktori sendiri.
sumber