Страницы: 1
RSS
Power Query работает с dbf файлами?, Power Query работает с dbf файлами?
 
Доброе время суток, уважаемые форумчане. Приходится много обрабатывать большие объемы dbf файлов. Power Query отлично для этого подходит. Понимает ли Power Query формат файлов dbf.
 
1. А проверить?
2. ODBC
По вопросам из тем форума, личку не читаю.
 
У меня не получилось. По этому и обратился за помощью.
 
Цитата
nonameOren написал:
По этому и обратился за помощью.
А примеры, что файлов, что образца неполучаещегося запроса? Всё должны отвечающие предоставить?
Updated
Проверил
Код
let
    source = OleDb.Query("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=c:\Path;Extended Properties='dBASE IV';", "Select * From [Travels.dbf]")
in
    source

Табличку прочитал.
Изменено: Андрей VG - 10.02.2017 13:29:36
 
Извиняюсь. Не подумал. Прикрепил пример файла.
С Excel файлами все в порядке, разобрался. А с dbf никак не могу понять каким образом импортировать файлы. С помощью "Из других источников" -> "Из ODBC"?
И как быть если в папке файлов с одинаковой структурой много?
 
Доброе время суток.
Как раз с ODBC не пошло, что-то не так у меня с драйвером, видимо. Поэтому на OleDb, как писал выше. Предполагается, что все dbf-файлы в папке одинаковой структуры.
Код
let
    sourcePath = "c:\Path",
    GetDbfContent = (fromPath as text, fileName as text) as any =>
        let
            sSQL = "Select * From [" & fileName & "];",
            connStr = "Provider=Microsoft.ACE.OLEDB.12.0;Extended Properties='DBASE IV';Data Source=" & fromPath & ";"
        in
            OleDb.Query(connStr, sSQL),
    folder = Folder.Files(sourcePath),
    dbfFiles = Table.SelectRows(folder, each Text.Lower([Extension]) = ".dbf")[Name],
    dbfContent = List.Transform(dbfFiles, each GetDbfContent(sourcePath, _))
in
    Table.Combine(dbfContent)

Успехов.
 
Андрей VG, похоже у меня тоже  проблемы с драйвером. Показывает вот такую ошибку:

В запросе "" произошла ошибка. DataSource.Error: OLE DB: Невозможно найти устанавливаемый ISAM.
Подробные сведения:
   DataSourceKind=OleDb
   DataSourcePath=data source=D:\Path;extended properties="DBASE IV";provider=Microsoft.ACE.OLEDB.12.0
   Message=Невозможно найти устанавливаемый ISAM.
   ErrorCode=-2147467259
 
Цитата
nonameOren написал:
у меня тоже  проблемы с драйвером
Скачайте и установите Access Runtime по версии и разрядности Excel - проблема решаемая. У меня хуже, дайвер то стоит (в источниках данных ODBC есть), но не подключается.
 
Андрей VG, не скажите где про это можно подробнее почитать?
 
Цитата
nonameOren написал:
где про это
Про что?
 
Андрей VG, power query. Про код который мне написали.
 




Я не знаю, насколько это подойдет для вашей задачи, но dbf файлы  можно просто открыть в excel а соответственно и power query, просто  изменив тип файла в окошке проводника c xlsx на dbf.
 
Цитата
написал:
Доброе время суток.Как раз с ODBC не пошло, что-то не так у меня с драйвером, видимо. Поэтому на OleDb, как писал выше. Предполагается, что все dbf-файлы в папке одинаковой структуры. Успехов.
Андрей, добрый день, вопрос а можно в полученной таблице создать столбец с именем файла или его частью, т.к. в имени файла дата (m2130322.dbf, где 130322 - дата)
Изменено: Олег Белый - 18.03.2022 09:37:44
 
Цитата
написал:
Андрей, добрый день, вопрос а можно в полученной таблице создать столбец с именем файла или его частью, т.к. в имени файла дата (m2130322.dbf, где 130322 - дата)
Код
let
    Запрос1 = let
    sourcePath = "C:\Users\beliy_on\Desktop\АПМ",
    GetDbfContent = (fromPath as text, fileName as text) as any =>
        let
            sSQL = "Select *, ('" & fileName & "') as dt From [" & fileName & "];",
            connStr = "Provider=Microsoft.ACE.OLEDB.12.0;Extended Properties='DBASE IV';Data Source=" & fromPath & ";"
        in
            OleDb.Query(connStr, sSQL),
    folder = Folder.Files(sourcePath),
    dbfFiles = Table.SelectRows(folder, each Text.Lower([Extension]) = ".dbf")[Name],
    dbfContent = List.Transform(dbfFiles, each GetDbfContent(sourcePath, _)) 

in
    Table.Combine(dbfContent)

Сделал, может кому пригодится.
 
Цитата
написал:
ПроверилКодlet
   source = OleDb.Query("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=c:\Path;Extended Properties='dBASE IV';", "Select * From [Travels.dbf]")
in
   source
Табличку прочитал.
Метод рабочий проверил на днях, но лучше сначала драйвера обновить: https://www.microsoft.com/ru-ru/download/details.aspx?id=54920
Страницы: 1
Читают тему
Наверх