#sql #delphi #ms-access
#sql #delphi #ms-access
Вопрос:
У меня возникли некоторые проблемы при попытке загрузить текстовый файл с разделителями табуляции в таблицу базы данных MS ACCESS с использованием Delphi.
До сих пор мне удавалось создать новую базу данных и таблицу Access, но когда я пытаюсь загрузить данные, я получаю исключение EOleException с сообщением:
‘Оператор INSERT INTO содержит следующее неизвестное имя поля: ‘FIELD1_FIELD2_FIELD3_ …’
Мой код выглядит следующим образом:
cs := 'insert into TABLENAME(FIELD1, FIELD2, FIELD3, FIELD4, FIELD5, FIELD6, FIELD7, FIELD8, FIELD9, FIELD10, FIELD11, FIELD12, FIELD13, FIELD14, FIELD15) select * from [FILENAME.txt] in "' EditJobLocation.Text '" "Text;HDR=Yes"';
ADOCommand2.CommandText := cs;
try
ADOCommand2.Execute;
etc...
Не уверен, в чем проблема, но я думаю, что это связано с частью ‘select *’, возвращающей все поля в виде одной строки, разделенной подчеркиванием.
Я искал в Google, пытаясь найти некоторые ответы, но пока ничего не нашел.
Любая помощь будет принята с благодарностью.
Комментарии:
1. Если проблема с «select *» кажется проблемой, возникает очевидный вопрос: вы уже пробовали «выбрать field1, field2, … » вместо этого?
2. Не изучая содержимое FILENAME.txt , в первых 2-3 строках, будет трудно помочь.
Ответ №1:
Предложение: попробуйте удалить insert
часть, оставив только select * from...
часть, например
cs := 'select * from [FILENAME.txt] in "' EditJobLocation.Text '" "Text;HDR=Yes"';
Используйте этот пересмотренный оператор SQL для открытия объекта набора записей. Если это удастся, проверьте коллекцию набора Fields
записей: т. Е. Сколько возвращенных столбцов, их имена, порядковые позиции и т. Д.
Надеюсь, это позволит определить, связана ли проблема с извлечением данных из текстового файла или с действием вставки.
p.s. если вы этого еще не сделали, рассмотрите возможность использования schema.ini
файла, чтобы получить лучший контроль над тем, как Access «видит» данные текстового файла в терминах столбцов и их типов данных.