2017-02-02 16 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]. [имя_поль]»

Я не знаю, почему это проблема. Если я попытаюсь извлечь квалификаторы имени файла здесь, я получаю ошибку «join expression not supported».

Мой 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

Да. Типично с моей стороны. Извиняюсь. Должны были «имена полей». Изменили ответ – Yemoku

 Смежные вопросы

  • Нет связанных вопросов^_^