powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / импорт из .txt
7 сообщений из 32, страница 2 из 2
импорт из .txt
    #37225339
СавсемГостьthe_sid,
тоже пробовал "поиграться" со спецификацией импорта. Похоже, Акцесс не просматривает сохраненные спецификации импорта при таком формате запроса
Код: plaintext
select ... from [{filename}] in '{path}'[text;DSN={ImportSpec}]


Отрывок из статьи по ссылкеЗапросы, использующие спецификацию Access, имеют в строке подключения следующие обязательные параметры:
DSN=ИмяСпецификации - имя созданной ранее и сохраненной спецификации;
IMEX=2 (чтение/запись в файл) или IMEX=1 (только чтение из файла);
HDR=No - при чтении из файла (наличие заголовка указывается в спецификации, если здесь указать HDR=Yes, то потеряете 1-ю запись). При экспорте этот параметр учитывается и должен быть указан правильно.
Внимание! Если вы забыли указать параметр IMEX, то при выполнении запроса получите сообщение: "Спецификация текстового файла <имя> не существует. Невозможен импорт, экспорт или присоединение с помощью этой спецификации." !?

СавсемГостьЗато нашел куда "втыкнуть" это {ImportSpec}, - всё в тот-же schema.ini
Можно для группы файлов со сходными параметрами (кодировка, наличие строки с именами полей, разделитель) создать одну спецификацию и указывать её в строке подключения, например:
Код: 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
импорт из .txt
    #37225383
Анатолий ( Киев ),
по порядку:
1) без IMEX (да и без DSN) в строке импорта из .txt файла нормально отрабатывает. Перед тем, как запостить проверил.
2) "Заголовок_Разделитель|" всего лишь название спецификации, | в пример втыклул "для наглядности". В принципе название спецификации может быть любым (с символами '#$@\/ не проверял). Вся "соль" в задании параметра Format=Delimited(|)

ЗЫ: "нашел" когда Акцесс использует свои сохраненные спецификации импорта
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
' импортирует записи без всяких вопросов-предупреждений
DoCmd.TransferText _
    TransferType:={одна из констант AcTextTransferType, например acImportDelim - значение по-умолчанию}, _
    SpecificationName:="{название спецификации импорта, строка}", _
    TableName:="{имя таблицы в которую будут импортированы записи, строка; _
		если таблица не существует - будет создана, если существует - записи будут добавлены к существующим}", _
    FileName:="{полный путь к импортируемому файлу, строка}", _
    HasFieldNames:={наличие имен полей в первой строе, логическое}, _
    CodePage:={кодовая страница, длинное целое; например  866  для Кириллицы DOS}
ЗЗЫ: (баян, начерняка) есть у метода TransferText ещё интересный параметр HTMLTableName :={идентификатор таблицы или списка из html файла}, учитывается только если параметр TransferType равен acImportHTML или acLinkHTML .
...
Рейтинг: 0 / 0
импорт из .txt
    #37225399
Анатолий ( Киев ),
Внимание! Если вы забыли указать параметр IMEX, то при выполнении запроса получите сообщение: "Спецификация текстового файла <имя> не существует. Невозможен импорт, экспорт или присоединение с помощью этой спецификации." !? Век живи, - век учись. Действиетльно, с указанием IMEX Акс читает параметры импорта из своей сохраненной спецификации...

А мужики-то и не знают!(с)
...
Рейтинг: 0 / 0
импорт из .txt
    #37225969
the_sid
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем большое спасибо! Задача выполнена.
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
импорт из .txt
    #39969911
igor00082
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
СавсемГость
the_sid,
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
' 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 заполнять программно перед импортом.


Поскажите как быть с экспортом
Код: vbnet
1.
DoCmd.TransferText acExportMerge, "EX", "КомПред", "C:\Users\user\Documents\КомПред.rtf"

Вадает Сообщение что спецификация текстового файла не существует. А сохраненый экспорт есть и выполняется. Я так понимаю ее програмно надо собирать а как постотреть если так то как посмотреть какая спецификация используется при сохраненом экспорте
...
Рейтинг: 0 / 0
импорт из .txt
    #39970024
Serg197311
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Возникла такая проблема - надо прочитать .txt файл такого типа
Код;Группа;Наименование;Описание;Папка;Производитель;Ед;Вид;Артикул
00-00000007;Абразивные материалы;Карпич (тест);Кирпич обыкновенный;Нет;;шт;Материалы вспомогательные;Арт 0001
и занести данные в таблицу Акса
Прочитав этот топик- импортировать получается
и так
Код: vbnet
1.
DoCmd.TransferText acImportDelim, , "nomen", "Path", True, , 65001 


и так
Код: vbnet
1.
2.
Set rst1 = CurrentDb.OpenRecordset("SELECT * FROM [Fname] IN '" & _
        CurrentProject.path & "'[Text;;IMEX=1;HDR=yes;CharacterSet=65001]")



Но - только если сделать разделитель в файле .txt - запятая.
Можно ли как-нибудь при импорте задать разделитель? или всегда только системный используется?
...
Рейтинг: 0 / 0
импорт из .txt
    #39970134
Serg197311
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так, сам разобрался - надо создать спецификацию импорта и там указать
...
Рейтинг: 0 / 0
7 сообщений из 32, страница 2 из 2
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / импорт из .txt
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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