Форум программистов, компьютерный форум, киберфорум
Microsoft Access
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.56/18: Рейтинг темы: голосов - 18, средняя оценка - 4.56
0 / 0 / 0
Регистрация: 05.10.2016
Сообщений: 27
1

Массовый импорт txt в access

08.09.2017, 02:15. Показов 3535. Ответов 29
Метки нет (Все метки)

Форум читала, запуталась напрочь.

Есть 60 txt-файлов одинаковой структуры: 1 столбец, значения - целые числа, шапки таблицы нет. Все файлы в одной папке. Пример файла прилагаю.

Нужно импортировать их в Access, каждый файл отдельной таблицей. Название таблицы = название файла. Шапка столбца = название файла или "id" (во всех таблицах одинаковое). Можно это прописать в спецификации и использовать ее при импорте.

Как их импортировать без мастера импорта? C vba у меня никак не складывается.

Файлы каждую неделю появляются новые, по 40, 60, 100 штук, все это умножается на несколько баз (разные проекты). Поэтому загружать ручками через мастер импорта уже дальше невозможно.

______

P.S. Одни и те же значения могут входить в несколько файлов, поэтому вариант слить все в одну таблицу с указанием исходного файла, как часто советуют на форуме - делать не хочется: будут дубли внутри таблицы и мне придется переделать всю дальнейшую обработку таблиц, которая уже налажена.
0
Вложения
Тип файла: txt актив встреча мамы купч.txt (4.1 Кб, 20 просмотров)
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
08.09.2017, 02:15
Ответы с готовыми решениями:

VBS. Импорт txt в Access выполняется, но все данные текстовой строки помещаются в первую ячейку
Добрый день. Нужна помощь. Написал скрипт VBS для импорта txt в Access. В Access заранее...

Массовый импорт файлов
Есть таблица с полем типа image, существует ли такая возможность массово загрузить в эту таблицу...

Массовый импорт из Excel
помогите разобраться новичку. необходимо сделать массовый импорт из Excel в БД MS SQL Суть...

Массовый импорт данных в базу
Добрый день. С SQL не дружу, поэтому прошу помощи у вас. Суть проблемы, есть .csv файл на около...

29
941 / 390 / 109
Регистрация: 21.03.2013
Сообщений: 1,038
08.09.2017, 09:39 2
Цитата Сообщение от compin Посмотреть сообщение
Одни и те же значения могут входить в несколько файлов, поэтому вариант слить все в одну таблицу с указанием исходного файла
прислушайтесь к этому совету. Я лично не вижу смысла из 60 текстовых документов получать 60 таблиц аксесса.
3
Модератор
Эксперт MS Access
10048 / 4061 / 655
Регистрация: 07.08.2010
Сообщений: 11,408
Записей в блоге: 3
08.09.2017, 12:43 3
видимо вы слишком переупростили текстовик, должна ведь быть в нем какая то полезная информация для дальнейшего использования и связи с другими таблицами

полностью поддерживаю идею одной таблицы с датой ввода, именем текстовика, номером строки
очень часто это помогает в дальнейшем анализе

====
двойники всегда можно удалить
0
8 / 7 / 0
Регистрация: 27.09.2015
Сообщений: 832
08.09.2017, 14:03 4
Цитата Сообщение от compin Посмотреть сообщение
P.S. Одни и те же значения могут входить в несколько файлов, поэтому вариант слить все в одну таблицу с указанием исходного файла, как часто советуют на форуме - делать не хочется: будут дубли внутри таблицы и мне придется переделать всю дальнейшую обработку таблиц, которая уже налажена.
здравствуйте, я занимаюсь устройством баз с подгрузкой информации из текстовых файлов, выгруженных из системы SAP ERP. Недавно тоже задумывался о подгрузках нескольких файлов сразу с произвольными названиями, но с одинаковой структурой и кол-вом столбцов.

Спецификацию, как я понимаю, можно создать единую для всех один раз и обращаться к ней при импорте. Пока думаю о способе и ищу решение. Найду, сообщу.))


P.S. может я не до конца понял. А текстовый файл всегда один за один раз? Или за один раз появляется множество текстовых файлов с разными названиями?

Добавлено через 5 минут
Цитата Сообщение от boby104 Посмотреть сообщение
прислушайтесь к этому совету. Я лично не вижу смысла из 60 текстовых документов получать 60 таблиц аксесса.
Согласен полностью. у меня подгружаются текстовики в одну таблицу-хранилище. Естественно с проверкой на дубли))
0
8 / 7 / 0
Регистрация: 27.09.2015
Сообщений: 832
08.09.2017, 14:10 5
Вот один из моих импортов через стандартный макрос в акцесс. Можно и без вба тут обойтись))

Единственное, текстовый файл должен располагаться по опеределенному пути (в примере есть) и всегда быть с одним и тем же названием))
0
Миниатюры
Массовый импорт txt в access  
0 / 0 / 0
Регистрация: 05.10.2016
Сообщений: 27
08.09.2017, 16:03  [ТС] 6
Цитата Сообщение от boby104 Посмотреть сообщение
прислушайтесь к этому совету. Я лично не вижу смысла из 60 текстовых документов получать 60 таблиц аксесса.
Я честно попыталась это сделать. НО: чтобы потом прописать значениям свойства, что они входили в тот или иной файл - все равно все эти файлы надо импортировать в Access. При этом мне дальнейший анализ по этим конкретным файлам надо сделать 1 раз, дальше мне эта база не нужна. В следующий раз будут другие файлы. Т.е. я затрачиваю на стандартизацию очень много времени (2-6 часов), дальше за 5 секунд делаю запрос, который без стандартизации делается 30 секунд, и дальше мне эта вся эта база не нужна.

Добавлено через 1 минуту
Цитата Сообщение от shanemac51 Посмотреть сообщение
видимо вы слишком переупростили текстовик, должна ведь быть в нем какая то полезная информация для дальнейшего использования и связи с другими таблицами
текстовик в таком виде ко мне приходит - это выгрузка из парсеров, никаких данных кроме названия файла и чисел в нем - нет. Вот работать запросами с названиями таблиц или столбцов я не умею, поэтому как-то автоматизировать хотя бы подстановку названий таблиц в результаты запроса - у меня не получилось.

Добавлено через 48 секунд
Цитата Сообщение от Dimasterfrom4e Посмотреть сообщение
спецификацию, как я понимаю, можно создать единую для всех один раз и обращаться к ней при импорте.
обращаться к ней ручками = 4 клика на каждый файл. Тоже долго ((

Добавлено через 1 минуту
Цитата Сообщение от Dimasterfrom4e Посмотреть сообщение
может я не до конца понял. А текстовый файл всегда один за один раз?
грубо говоря, в неделю 5-10 проектов, по каждому проекту - своя база данных. По каждому проекту в неделю появляется от 20 до 100 новых текстовиков, которые надо загрузить в базу этого проекта

Добавлено через 3 минуты
Цитата Сообщение от Dimasterfrom4e Посмотреть сообщение
Вот один из моих импортов через стандартный макрос в акцесс.
Я видимо настолько безнадежна, что даже таких детальных команду макросов не нашла ((( Хотя макросы ковыряла часа 4. Но файлов у меня вот сейчас 37, завтра будет еще 56, во вторник будет еще 22 + 34 + 40-60. Т.е. я не могу по каждому файлу такой макрос делать.

Добавлено через 3 минуты
Цитата Сообщение от shanemac51 Посмотреть сообщение
полностью поддерживаю идею одной таблицы с датой ввода, именем текстовика, номером строки
очень часто это помогает в дальнейшем анализе
Я могу и в одну таблицу, не вопрос. Вопрос в том, как эти файлы импортировать в Access не ручками. И в случае одной таблицы - как потом заставить Access каждому значению проставить галочку в столбец с названием того файлика, в котором есть вхождение этого значения. С учетом того, что одно значение может входить в несколько файлов, и важны все вхождения.
0
0 / 0 / 0
Регистрация: 05.10.2016
Сообщений: 27
08.09.2017, 16:05  [ТС] 7
Т.е вот примерно так оно получается:
0
Миниатюры
Массовый импорт txt в access  
941 / 390 / 109
Регистрация: 21.03.2013
Сообщений: 1,038
08.09.2017, 16:07 8
Цитата Сообщение от compin Посмотреть сообщение
Т.е. я не могу по каждому файлу такой макрос делать.
Все советы вам сводятся к тому, чтоб вы изменили алгоритм решения Главной задачи. И возиться с тем чтоб писать процедуру обработки неограниченного количества файлов в папке и создания такого же количества таблиц эксесс с одним столбцом, не понимая для чего это нужно, мне лично лень.
Вам же хотят помочь, а Вы упираетесь. Прочтите условия форума внимательно. После этого сформулируйте Главную задачу. Покажите на своем примере, как это решается вами (выложите базу или ее часть) и тогда, я уверен, Вы получите результат, который сократит 2-6 часов вашей регулярной работы. Вы боитесь переделать какой то там уже работающий у вас запрос и все строите под него. Может настало время поменять этот устаревший запрос на новый.
0
0 / 0 / 0
Регистрация: 05.10.2016
Сообщений: 27
08.09.2017, 16:12  [ТС] 9
Цитата Сообщение от boby104 Посмотреть сообщение
Все советы вам сводятся к тому, чтоб вы изменили алгоритм решения Главной задачи.
я не упираюсь) Сейчас опишу главную задачу. Прикрепить базу - не знаю как, у вас лимит 20 кб на файл, у меня почти все текстовые файлики больше 20 кб, а базы - до предела. Ща попробую
0
Модератор
Эксперт MS Access
10048 / 4061 / 655
Регистрация: 07.08.2010
Сообщений: 11,408
Записей в блоге: 3
08.09.2017, 16:15 10
зазипуйте, лимит 20мб
0
0 / 0 / 0
Регистрация: 05.10.2016
Сообщений: 27
08.09.2017, 16:18  [ТС] 11
окей. Главная задача:
Дано:
- Проект
Внутри проекта:
- 20-30-60-100 текстовых файлов, полученных из внешних источников. Я не могу их получать в другом виде, они ко мне такими приходят. Файл = название выборки, внутри файла - 1 столбец, значения - числа, количество значений - от 1000 до 20 млн.
- 1 эксель-файл. В нем 4 столбца, 1 из столбцов - числовой, соответствует значениям текстовых файликов. Остальные столбцы не имеют значения, я их просто вывожу в финальный отчет.

Задача:
Каждое значение эксель-файла сверить с каждым текстовым файлом, отметить, в какие текстовые файлы оно входит.

В конечном итоге я получаю отчет такого вида:
На картинке отметила тот столбец, по которому идет сопоставление данных между эксель-файлом и текстовыми файликами.
0
Миниатюры
Массовый импорт txt в access  
0 / 0 / 0
Регистрация: 05.10.2016
Сообщений: 27
08.09.2017, 16:25  [ТС] 12
На данный момент я решаю это вот таким запросом:

Проектов одновременно в работе 5-10, часто появляются новые проекты.
По каждому проекту на старте 5-10 файликов txt, дальше каждую неделю добавляется по 20-40.
Дергать сосбна запрос сверки данных надо где-то раз в неделю, обрабатывается он быстро, больше ни дня чего база не нужна.
Самое долгое - загружать чертовы файлики в Access и прописывать связи с ними в запросе.

Сейчас попробую обрезать файлики и прикрепить
0
0 / 0 / 0
Регистрация: 05.10.2016
Сообщений: 27
08.09.2017, 16:29  [ТС] 13
Сорри, не прикрепилось.
Второй скрин ни в какую не хочет прикрепляться, вот он:

Это скрины запроса, ради которого вся пляска делается. Да, можно вместо него сливать все в одну базу и в ней прописывать свойства для значений. Но это не отменяет загрузку файликов
0
Миниатюры
Массовый импорт txt в access  
0 / 0 / 0
Регистрация: 05.10.2016
Сообщений: 27
08.09.2017, 16:39  [ТС] 14
Загрузила в архив примеры текстовых файликов, эксель-отчет, который надо с ними сверять, базу с запросом, которым я сейчас решаю задача. Согласна, что решение кривое.

Как решить более прямо?
0
Вложения
Тип файла: rar БД.rar (1.84 Мб, 13 просмотров)
941 / 390 / 109
Регистрация: 21.03.2013
Сообщений: 1,038
08.09.2017, 16:50 15
Цитата Сообщение от compin Посмотреть сообщение
Каждое значение эксель-файла сверить
Где этот файл?
Или сам файл ексель в конечном счете и становится отчетом который показан на картинке?

Добавлено через 8 минут
Цитата Сообщение от compin Посмотреть сообщение
В конечном итоге я получаю отчет такого вида:
На картинке отметила тот столбец, по которому идет сопоставление данных между эксель-файлом и текстовыми файликами.
я правильно понял что столбцы файла имеют название, соответствующее названию файла. Сколько файлов = столько и столбцов?
0
Модератор
Эксперт MS Access
3395 / 1892 / 467
Регистрация: 12.06.2016
Сообщений: 4,838
08.09.2017, 16:52 16
compin,

Примерный вариант автоматического выбора файлов из заданной папки
и импорта каждого из файлов в отдельную таблицу с именем файла.
Visual Basic
1
2
3
4
5
6
7
Function FuncTxtImport(FolderPath As String)
 Dim S As String
 S = Dir(FolderPath & "\*.txt")
 Do Until S = ""
   DoCmd.TransferText acImportFixed, "<спецификация связи>", Left(S, Len(S) - 4), FolderPath & "\" & S
 Loop
End Function
Вызов функции:
Visual Basic
1
Call FuncTxtImport(<адрес папки>)
Может, какие погрешности обнаружатся (пишу с планшета наобум) - подправите.
1
0 / 0 / 0
Регистрация: 05.10.2016
Сообщений: 27
08.09.2017, 17:00  [ТС] 17
Что еще пробовала:
1. Сделала единую таблицу со всеми данными.

НО: чтобы в ней прописать, какое значение в какие файлики у меня входило - мне надо 37 раз дернуть запрос обновления данных. Либо жестко прописать 37 запросов в макросе, с конкретными названиями баз и таблиц. Плюс связать все файлики. Когда будут новые файлики - снова прописать их ручками. Я могу, но это не получается быстрее, чем самый кривой вариант.

2. Сделала справочник файликов, прописала каждому файлику числовой id. C тем, чтобы потом было проще переносить алгоритм на другие проекты и другие файлики.
Столкнулась с проблемой: не понимаю, как в конечный ответ вывести не номера файликов, а их первоначальные названия.
И не могу сама прописать удобный скрипт, чтобы при импорте файликов таблице автоматически присваивался номер из справочника. А ручками есть риск ошибиться с номером и потом вообще весь отчет поедет.
0
Миниатюры
Массовый импорт txt в access  
0 / 0 / 0
Регистрация: 05.10.2016
Сообщений: 27
08.09.2017, 17:02  [ТС] 18
у меня даже больше одной картинки за один раз не получается загрузить, я совсем безрукая (((
0
Миниатюры
Массовый импорт txt в access  
Модератор
Эксперт MS Access
3395 / 1892 / 467
Регистрация: 12.06.2016
Сообщений: 4,838
08.09.2017, 17:02 19
Лучший ответ Сообщение было отмечено compin как решение

Решение

Обнаружена пропажа одной важной строчки.)))
Исправлено:
Visual Basic
1
2
3
4
5
6
7
8
Function FuncTxtImport(FolderPath As String)
 Dim S As String
 S = Dir(FolderPath & "\*.txt")
 Do Until S = ""
   DoCmd.TransferText acImportFixed, "<спецификация связи>", Left(S, Len(S) - 4), FolderPath & "\" & S
   S = Dir
 Loop
End Function
2
0 / 0 / 0
Регистрация: 05.10.2016
Сообщений: 27
08.09.2017, 17:05  [ТС] 20
Цитата Сообщение от boby104 Посмотреть сообщение
Где этот файл?
Или сам файл ексель в конечном счете и становится отчетом который показан на картинке?

сам excel - в архиве с базой. Дублирую. Его данные в столбце id - сверяются со столбцами id в текстовых файликах.
Конечный отчет = результат запроса в Access, запрос есть в базе. Оттуда я просто ручками копирую данные и вставляю в гугл-отчет заказчику.
0
Вложения
Тип файла: xlsx лиды.xlsx (15.0 Кб, 2 просмотров)
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
08.09.2017, 17:05

Заказываю контрольные, курсовые, дипломные работы и диссертации здесь.

Массовый импорт из Excel файлов
Доброго дня! Сложилась такая ситуация: есть большое количество файлов excel (около 500), в них...

Массовый импорт xml файлов в sql
Доброго времени суток! Скорее всего подобная тема уже поднималась, но не нашел четкого ответа....

Не получается выполнить массовый импорт с BULK INSERT
Всем доброго времени суток! Всех с Рождеством! В общем, в этот рождественский вечер сел писать...

Экспорт-импорт из access в access 2003
сть две одинаковые по структуре таблицы access находящиеся на разных компах. Как сделать так чтобы...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.