Sql Server Management Studioからタブ区切りファイルをクエリして、どこにも保存せずにデータを表示することはできますか?
次のようなものを使用して、タブ区切りファイルからBULK INSERT
できることを知っています。
BULK INSERT SomeTable
FROM 'MyFile.txt'
WITH (
FIELDTERMINATOR = '\t',
ROWTERMINATOR = '\n');
ただし、事前に列を把握し、データを保持するテーブルを作成する必要があります。
また、OPENROWSET
およびExcelドライバーを使用して、列を事前に定義せずに、CSVや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でHKLM\Software\Microsoft\Office\12.0\Access Connectivity Engine\Engines\Text
の下のレジストリキーFormat
をCSVDelimited
からTabDelimited
に変更すると、上記のCSVクエリはタブ区切りの文字を正しく読み取りますテキストファイルですが、コンマ区切りのテキストファイルは読み取られないので、そのままにしたくないと思います。
OPENROWSET
でFormat=TabDelimited
を使用しようとしても機能しない
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を各テキストファイルの独自のディレクトリに含めることができます。
多分 SSMS:Excelからデータをインポート(コピー/貼り付け)する方法 が役立ちます(OPENROWSET
を使用したくない場合、またはそれに対する権限がない場合)。