powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / импорт из .txt
25 сообщений из 32, страница 1 из 2
импорт из .txt
    #37224390
the_sid
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Необходимо импортировать файлы, имеющие txt формат в таблицу базы. Тупо изменение расширения ничего не даёт. Что можно сделать?
...
Рейтинг: 0 / 0
импорт из .txt
    #37224399
Фотография mds_world
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
http://computerplus.com.ua/Krivtsov.htm
Скачайте и прочитайте док-файл "Access и текстовые файлы"
...
Рейтинг: 0 / 0
импорт из .txt
    #37224679
the_sid
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Примеры импорта:
Создание таблицы (поля - выборочно) из C:\Файл.txt (заголовок указан в спецификации):
sCnn2="[Text;DSN=Спецификация импорта;IMEX=2;HDR=No]"
"SELECT Поле1, Поле10 INTO Таблица FROM Файл#txt IN 'C:\'" & sCnn2
Пополнение таблицы (поля - выборочно) из C:\Файл.txt (заголовок указывается здесь):
sCnn3="[Text;DSN=Спецификация экспорта;IMEX=2;HDR=Yes]"
"INSERT INTO Таблица SELECT Поле1,Поле10 FROM Файл#txt IN 'C:\'" & sCnn3
из этого документа.

В моём случае таблица для импорта уже есть
Пробую:
Код: plaintext
1.
2.
3.
4.
5.
6.
sCnn1 = "[Text;DSN=acImportDelim;IMEX=1;HDR=Yes]"
SQL = "Insert into [f103]" _
              & " Select *,'" & oFile.name _
              & "' AS fileName,'" & sMailType & "' AS MailType,'" _
              & sMailCtg & "' AS MailCtg, " & nListNum & " AS ListNum, " & sSendDate & " AS SendDate from " & oFile.name _
              & " IN " & sFolderPath & " & " " & sCnn1 

Ошибка синтаксиса в выражении From. В чём здесь косяк?
...
Рейтинг: 0 / 0
импорт из .txt
    #37224692
the_sid
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
точнее:
sCnn1 = "[Text;DSN=acImportDelim;IMEX=1;HDR=Yes]"
SQL = "Insert into [f103]" _
& " Select *,'" & oFile.name _
& "' AS fileName,'" & sMailType & "' AS MailType,'" _
& sMailCtg & "' AS MailCtg, " & nListNum & " AS ListNum, " & sSendDate & " AS SendDate from " & oFile.name _
& " IN " & sFolderPath & " " & sCnn1
...
Рейтинг: 0 / 0
импорт из .txt
    #37224703
Фотография mds_world
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
the_sid,

распечатайте (debug.print SQL) переменную SQL и покажите ее здесь
...
Рейтинг: 0 / 0
импорт из .txt
    #37224739
the_sid
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
вот:
Insert into [f103] Select *,'102172.txt' AS fileName,'4' AS MailType,'4' AS MailCtg, 2 AS ListNum, 20110217 AS SendDate from 102172.txt IN C:\Documents and Settings\the_sid\Рабочий стол\Резерв\Новая папка\f103\ [Text;DSN=acImportDelim;IMEX=1;HDR=Yes]
...
Рейтинг: 0 / 0
импорт из .txt
    #37224747
ё
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ё
Гость
the_sidвот:
Insert into [f103] Select *,'102172.txt' AS fileName,'4' AS MailType,'4' AS MailCtg, 2 AS ListNum, 20110217 AS SendDate from 102172.txt IN C:\Documents and Settings\the_sid\Рабочий стол\Резерв\Новая папка\f103\ [Text;DSN=acImportDelim;IMEX=1;HDR=Yes]
точка стоит в имени файла
и апострофов вокруг пути - нет
...
Рейтинг: 0 / 0
импорт из .txt
    #37224766
Фотография ПЕНСИОНЕРКА
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
the_sid,

распечатайте весь модуь

Код: plaintext
1.
sFolderPath   =не найден
 oFile.Name  =имя объекта не присвоено
...
Рейтинг: 0 / 0
импорт из .txt
    #37224787
Фотография ПЕНСИОНЕРКА
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ПЕНСИОНЕРКА,


кавычки
Код: plaintext
1.
2.
3.
4.
5.
6.
Insert into [f103] Select *,'102172.txt' AS fileName,
'4' AS MailType,
'4' AS MailCtg,
  2  AS ListNum, 
 20110217  AS SendDate
 from  102172 .txt IN '<<<C:\Documents and Settings\the_sid\Рабочий стол\Резерв\Новая папка\f103\>>>' [Text;DSN=acImportDelim;IMEX= 1 ;HDR=Yes]
...
Рейтинг: 0 / 0
импорт из .txt
    #37224789
Фотография ПЕНСИОНЕРКА
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ПЕНСИОНЕРКА,

уголков конечно не надр
...
Рейтинг: 0 / 0
импорт из .txt
    #37224796
the_sid
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
поправил, теперь ругается:
Файл "не может быть открыт ядром базы Microsoft Jet".Файл уже открыт другим пользователем для монопольного доступа или требуется разрешение на просмотр данных
...
Рейтинг: 0 / 0
импорт из .txt
    #37224811
ё
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ё
Гость
the_sidпоправил, теперь ругается:
Файл "не может быть открыт ядром базы Microsoft Jet".Файл уже открыт другим пользователем для монопольного доступа или требуется разрешение на просмотр данных
ну так закрой его
...
Рейтинг: 0 / 0
импорт из .txt
    #37224815
the_sid
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
я его и не открывал
...
Рейтинг: 0 / 0
импорт из .txt
    #37224816
the_sidвот:
Insert into [f103] Select *,'102172.txt' AS fileName,'4' AS MailType,'4' AS MailCtg, 2 AS ListNum, 20110217 AS SendDate from 102172.txt IN C:\Documents and Settings\the_sid\Рабочий стол\Резерв\Новая папка\f103\ [Text;DSN=acImportDelim;IMEX=1;HDR=Yes]

Вместо from 102172.txt надо from 102172#txt или from [102172.txt]
Про апостофы вокруг пути вам сказали.
И что такое DSN=acImportDelim? Должно быть DSN=ИмяСпецификации, а acImportDelim - это из другой оперы (DoCmd.TransferText).
...
Рейтинг: 0 / 0
импорт из .txt
    #37224847
the_sid
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Анатолий ( Киев )the_sidвот:
Insert into [f103] Select *,'102172.txt' AS fileName,'4' AS MailType,'4' AS MailCtg, 2 AS ListNum, 20110217 AS SendDate from 102172.txt IN C:\Documents and Settings\the_sid\Рабочий стол\Резерв\Новая папка\f103\ [Text;DSN=acImportDelim;IMEX=1;HDR=Yes]

Вместо from 102172.txt надо from 102172#txt или from [102172.txt]
Про апостофы вокруг пути вам сказали.
И что такое DSN=acImportDelim? Должно быть DSN=ИмяСпецификации, а acImportDelim - это из другой оперы (DoCmd.TransferText).

поправил, далее ругается:
Инструкция Insert содержит неизвестное имя поля 'Barcode|Mass|MassRate|Payment|Value|InsrRate|AirRate|IndexTo|Region|Area|City|MailDirect|AlterDeliv|TelAddress'


Поле это является первой строкой импортируемого файла, который имеет вид:
Barcode|Mass|MassRate|Payment|Value|InsrRate|AirRate|IndexTo|Region|Area|City|MailDirect|AlterDeliv|TelAddress
14080835548147|1480|14160|0|89800|3592|0|196240|‘ЂЌЉ’-Џ…’…ђЃ“ђѓ||‘ЂЌЉ’-Џ…’…ђЃ“ђѓ|643|0|
14080835548154|1550|14630|0|99800|3992|0|117485|||ЊЋ‘Љ‚Ђ|643|0|
14080835548161|1550|17170|0|99800|3992|0|662971|ЉђЂ‘ЌЋџђ‘Љ€‰ Љђ.||†…‹…‡ЌЋѓЋђ‘Љ|643|0|
14080835548178|1550|15210|0|99800|3992|0|355000|‘’Ђ‚ђЋЏЋ‹њ‘Љ€‰ Љђ.||‘’Ђ‚ђЋЏЋ‹њ|643|0|
14080835548185|1550|15210|0|99800|3992|0|194223|||‘ЂЌЉ’-Џ…’…ђЃ“ђѓ|643|0|
..........
...
Рейтинг: 0 / 0
импорт из .txt
    #37224864
the_sid
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
неужели вручную придётся закидывать?
...
Рейтинг: 0 / 0
импорт из .txt
    #37224876
the_sidпоправил, далее ругается:
"Поправил"==создал сиситемный/пользоветельский DSN и указал его в парамтерах подключения для запроса
?
Если да, - то поправить в этом DSN параметр "Разделитель".
...
Рейтинг: 0 / 0
импорт из .txt
    #37224930
the_sid
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
СавсемГостьthe_sidпоправил, далее ругается:
"Поправил"==создал сиситемный/пользоветельский DSN и указал его в парамтерах подключения для запроса
?
Если да, - то поправить в этом DSN параметр "Разделитель".

"поправил" - просто не указал этот параметр.
Сейчас создал системный DSN с именем "MyDSN"
Прописываю так
"[Text;DSN=MyDSN;IMEX=1;HDR=Yes]"
Пишет что не знает такой спецификации
...
Рейтинг: 0 / 0
импорт из .txt
    #37224933
the_sid,
Код: plaintext
1.
2.
3.
4.
5.
6.
' NB! никаких лишних пробелов 
sCnn1 = "[Text;]"
SQL = "Insert into [f103]" _
& " Select *,'" & oFile.name _
& "' AS fileName,'" & sMailType & "' AS MailType,'" _
& sMailCtg & "' AS MailCtg, " & nListNum & " AS ListNum, " & sSendDate & " AS SendDate from [" & oFile.name _
& "] IN '" & sFolderPath & "'" & sCnn1


в папке sFolderPath создать текстовый файл с именем schema.ini следующего содержания
Код: plaintext
1.
2.
3.
[имя Вашего файла для импорта включая расширение]
ColNameHeader=True
Format=Delimited(|)
CharacterSet=ANSI

В примере указана кодировка ANSI. Вам надо указать ту, в которой сохранен Ваш файл, иначе получите кракозябры, как в Вашем посте

PS: если файлов для импорта несколько, - schema.ini заполнять программно перед импортом.
...
Рейтинг: 0 / 0
импорт из .txt
    #37224988
the_sid
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
большое спасибо, заработало. Только проблемка перед импортом выскакивает предупреждения о том сколько записей добавить.
У меня не один файл импортируется, так что это беда.
...
Рейтинг: 0 / 0
импорт из .txt
    #37224991
Попробуйте віполнить импорт вручную (через меню). При этом вам будет предложено настроить спецификацию, в которой нужно (кроме всего прочего) указать разделитель полей "|". Сохраните ее под каким-то именем и в дальнейшем указывайте его в команде DoCmd.TransferText или в строке подключения запроса (DSN=ИмяСпецификации).

СавсемГость, вы путаете DSN для ODBC драйвера и DSN в Access в строке подключения к текстовому файлу.
...
Рейтинг: 0 / 0
импорт из .txt
    #37225020
the_sidбольшое спасибо, заработало. Только проблемка перед импортом выскакивает предупреждения о том сколько записей добавить.
У меня не один файл импортируется, так что это беда.
Видимо вы используете метод DoCmd.RunSQL. Вместо него выполняйте CurrentDB.Execute.
...
Рейтинг: 0 / 0
импорт из .txt
    #37225022
Анатолий ( Киев )СавсемГость, вы путаете DSN для ODBC...Действительно. Спасибо.
...
Рейтинг: 0 / 0
импорт из .txt
    #37225105
the_sid
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Анатолий ( Киев )Попробуйте віполнить импорт вручную (через меню). При этом вам будет предложено настроить спецификацию, в которой нужно (кроме всего прочего) указать разделитель полей "|". Сохраните ее под каким-то именем и в дальнейшем указывайте его в команде DoCmd.TransferText или в строке подключения запроса (DSN=ИмяСпецификации).

СавсемГость, вы путаете DSN для ODBC драйвера и DSN в Access в строке подключения к текстовому файлу.


Попробовал сохранить спецификацию. Проприсал её имя. Но ругается что не знает такой.
...
Рейтинг: 0 / 0
импорт из .txt
    #37225243
the_sid,
тоже пробовал "поиграться" со спецификацией импорта. Похоже, Акцесс не просматривает сохраненные спецификации импорта при таком формате запроса
Код: plaintext
select ... from [{filename}] in '{path}'[text;DSN={ImportSpec}]
Зато нашел куда "втыкнуть" это {ImportSpec}, - всё в тот-же schema.ini
Вместо того, чтобы для каждого импортируемого файла создавать раздел
Код: plaintext
1.
[имя файла с расширением]
{параметры импорта}
и запрос писать без указания DSN
Код: plaintext
select ... from [{filename}] in '{path}'[text;]


Можно для группы файлов со сходными параметрами (кодировка, наличие строки с именами полей, разделитель) создать одну спецификацию и указывать её в строке подключения, например:
Код: plaintext
1.
2.
3.
4.
5.
6.
[Заголовок_Разделитель|]
ColNameHeader=True
Format=Delimited(|)
CharacterSet=OEM
;PS: неприятная особенность - при использовании одной спецификации для нескольких файлов Акцесс игнорирует параметр CharacterSet 
;    Придется кодировку задавать в строке подключения
Код: plaintext
select ... from [{filename}] in '{path}'[text;DSN=Заголовок_Разделитель|;CharacterSet=OEM]
...
Рейтинг: 0 / 0
25 сообщений из 32, страница 1 из 2
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / импорт из .txt
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]