2017-02-02 6 views
0

방금이 작업을 수행 할 수 있다고 가정했지만 궁금해하기 시작했습니다. 우선 내가ADO를 사용하여 텍스트 파일에 가입 및 쿼리

Select [file_name.txt].[fieldname] From [file_name.txt] 

"유효한 이름이 아닙니다 (다만 가장 간단한 구문을 내려 노력)도 하나의 테이블로, 그것이 내가 일반적으로 사용하는 구문을하지 않습니다 몰래있어입니다 -이 오류가 있습니다. 필드에서 파일 이름 한정자를 제거하고 괜찮 으면 가입 할 때 일반적으로 조인 부분에서 다음과 같은 종류의 구문을 사용해야합니다.

Inner Join [file_name2.txt] On [file_name.txt].[fieldname]=[file_name2.txt].[fieldname] 

가 밖으로 잘못 말할 것이다이 경우 "[file_name.txt]의 무효 브라케팅. [필드 명]"

,536,

이것이 왜 문제가되는지 잘 모르겠습니다. 여기에 파일 이름 한정자를 사용하려고하면 "조인식이 지원되지 않습니다."오류가 발생합니다.

내 Schema.ini 파일은 다음과 같습니다

[file_name.txt] 
Format=Delimited(|) 
ColNameHeader=True 

[file_name2.txt] 
Format=Delimited(|) 
ColNameHeader=True 

내 연결 문자열은 다음과 같습니다이도 가능한 경우

"Provider=Microsoft.Jet.OLEDB.4.0;Data Source="C:\Path" 
;Extended Properties=""text;HDR=Yes""" 

그래서 내가 궁금하네요.

답변

1

예. 그것은 가능하며 작동합니다. 나는 당신의 질문에 흥미가있어서 혼자서 시험해 보았습니다. 텍스트 드라이버는 테이블 이름에서만 필드 이름의 대괄호를 이해하지 못합니다.

따라서이 같은 필드 이름에 별칭을 사용 : 나를 위해 일한 무엇

Select tb1.[fieldname], tb2.[fieldname] From [file_name.txt] as tb1 
Inner Join [file_name2.txt] as tb2 
On tb1.[fieldname]=tb2.[fieldname] 

가 :

SELECT tb1.[Month], tb2.[Year] FROM [Text;DATABASE=E:\].[MoneyAndCreditStats 0409 to 0417.csv] as tb1 
INNER JOIN [Text;DATABASE=E:\].[StackaOverFlowTest.csv] as tb2 ON 
tb2.[Month] = tb1.[Month] AND 
tb1.[Year] = tb2.[Year] 

텍스트 드라이버는 특히 비즈니스 인텔리전스 주변에 데이터 형식/파일을 셔플 멋진 도구입니다 .

+0

예, 당신이 맞습니다, 당신의 예는 사실입니다. 나는 다른 곳에서 같은 대답을 찾았다. 그 설명은 내가 믿기로 한 의미가 아니라는 것을 유의하십시오. 이 경우 텍스트 드라이버는 필드 이름 주위에만 대괄호를 인식하므로 조인에 별칭을 사용해야합니다. – tbaker818

+0

예. 내 잘못 입력. 사과. "fieldnames"여야합니다. 대답을 수정했다. – Yemoku