доступ: чтение файла CSV в таблицу - PullRequest
1 голос
/ 07 июня 2010

возможно ли программно иметь доступ, открыть определенный CSV-файл и прочитать его в таблицу данных и установить параметры, такие как время делителя, TEXT QUALIFIER и т. Д., Включая все шаги, которые необходимо выполнить, чтобы вручную импортировать CSV-файл в таблицу

Ответы [ 2 ]

2 голосов
/ 07 июня 2010

Вы можете создать Scripting.FileSystemObject, затем поток за строкой в ​​файле, разделив поля разделителем и добавив каждую проанализированную запись в базовый набор записей или другую таблицу.

Вы также можете поэкспериментировать с DoCmd.TransferText, так как это кажется наиболее перспективным встроенным методом.

Редактировать: для более полного (и сложного и, возможно, менее эффективного) решения, которое дало бы вам больший контроль над схемой и рассматривал бы любой файл CSV, как и любой другой источник данных, посмотрите ODBC: текстовый драйвер Microsoft - http://support.microsoft.com/kb/187670 для примеров сценариев. Я полагаю, что вы уже можете просто link к любым файлам cvs через стандартный интерфейс MS Access, что позволяет вам выполнять практически любые операции чтения / копирования таблиц на нем. В противном случае просто настройте запись dns файла ODBC для подключения вашего csv-файла (через Пуск-> Программные файлы-> Администрирование-> Источники данных), а затем вы можете выбрать / связать его с помощью файла Access.

0 голосов
/ 28 апреля 2019

Это во многом зависит от того, создана ли таблица Access или вы хотите создать ее на лету.Предположим (для простоты), что таблица уже существует (вы всегда можете вернуться и создать таблицу).Как и предлагалось ранее, вам понадобятся некоторые скриптовые инструменты:

Dim FSO As FileSystemObject, Fo As TextStream, line As String
Set FSO = CreateObject("Scripting.FileSystemObject")
Set Fo = FSO.OpenTextFile("csvfile.csv")

Это позволит вам прочитать ваш CSV-файл, который является текстовым файлом.Здесь вы контролируете, какой разделитель вы используете и какой формат даты будет использоваться и т. Д.Вам также нужно включить механизм базы данных:

Dim db As Database
Set db = DBEngine.OpenDatabase("mydatabase.accdb")

И это в основном все, что вам нужно.Вы читаете свой CSV-файл построчно:

While Not Fo.AtEndOfStream
 line = Fo.ReadLine

Теперь вам нужно иметь возможность отформатировать каждое поле для таблицы, что означает: текстовые поля должны быть заключены в кавычки (")поля даты должны быть окружены #, т. д. В противном случае ядро ​​базы данных будет с шумом жаловаться. Но, опять же, вы здесь отвечаете, и вы можете делать любые косметические операции, которые вам нужны, для вашей строки ввода.ради простоты) вам удобно программировать на VBA, поэтому давайте рассмотрим суть проблемы:

 db.Execute ("INSERT INTO myTable VALUES (" & line & ")")
Wend

В этот момент строка была превращена во что-то съедобноедля механизма базы данных, например, если исходная строка чтения была

33,04/27/2019,1,1,0,9,23.1,10,72.3,77,85,96,95,98,10,5.4,5.5,5.1,Cashew,0

, вы изменили ее на

33,#04/27/2019#,1,1,0,9,23.1,10,72.3,77,85,96,95,98,10,5.4,5.5,5.1,"Cashew",0

Последнее примечание: Это важночто каждое поле файла CSV совпадает с полем в таблице. Это включает, по крайней мере, но не обязательно последнее, в правильном порядке. Вы должны убедиться, что на этапе предварительной обработки вы. HОпе, это поставит вас на правильный путь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...