SSMS에서 탭으로 구분 된 파일을 쿼리 할 수 ​​있습니까? ‘SELECT * FROM MyFile.csv’) —

Sql Server Management Studio에서 탭으로 구분 된 파일을 쿼리하여 데이터를 저장하지 않고 데이터를 볼 수 있습니까?

나는 당신이 BULK INSERT다음과 같은 것을 사용하여 탭으로 구분 된 파일에서 할 수 있다는 것을 알고 있습니다 :

BULK INSERT SomeTable
FROM 'MyFile.txt'
WITH (
FIELDTERMINATOR = '\t',
ROWTERMINATOR = '\n');

그러나이를 위해서는 사전에 열을 알고 데이터를 보유 할 테이블을 작성해야합니다.

또한 열을 사용하여 사전에 정의하지 않고 CSV 또는 Excel과 같은 다른 파일 형식과 OPENROWSETExcel 드라이버를 쿼리 할 수 ​​있다는 것을 알고 있습니다 .

-- 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$]')

나는 레지스트리 키를 변경하는 경우 또한, Format아래 HKLM\Software\Microsoft\Office\12.0\Access Connectivity Engine\Engines\Text에서 CSVDelimitedTabDelimited는 SQL Server에서 위의 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레지스트리 키를 EnginesISAM 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를 각 텍스트 파일에 자체 디렉토리에 포함시킬 수 있습니다.


답변