[it-konsultant@blog] :
26 Апр 2017 
Pumpdbf.exe представляет из себя консольное приложение для объединения DBF файлов, в один сводный файл. В данном приложении предусмотрено ведение лог файлов. Для работы не требуется BDE.
PUMPDBF.EXE [диск:]путь до DBF файлов [диск:]путь до нового DBF файла
В данном случае утилита объединения dbf файлов найдет все DBF файлы содержащиеся в папке C:\dbffiles (включая подпапки), после этого произведет анализ структуры dbf файлов и на основании структуры (названия полей, типы полей, размерность) создаст новый dbf файл (C:\all.dbf) и произведет загрузку в него данных из всех найденных файлов.
Объединение DBF файлов
Приложение протестировано в операционных системах: XP, Vista, Windows server 2008, 7.
Скачать программу объединения dbf файлов
(демонстрационная версия программы загружает не более 10 записей из каждого файла)
-
(832,000 байт) (394,446 байт) (321,065 байт)
История изменений
Добавлена возможность указания кодировки при объединении (dos, win)
При объединении не добавляется новая колонка FILE_NAME
Исправлена ошибка «InternalOpen: BufferSize too small!» Новая версия доступна для загрузки.
В общем статусе реализовано отображение оставшегося времени объединения dbf файлов
Доработан алгоритм определения структуры для итогового dbf файла.
Отображение общего статуса загрузки dbf файлов (обрабатываемая запись из общего количества)
Как объединить dbf файлы
Часто в процессе работы может возникнуть необходимость объединения содержимого файлов в один так сказать произвести слияние dbf. Объединение dbf происходит по одинаковым названиям колонок в файлах, то есть не обязательно, чтобы файлы имели одинаковую структуру. В настоящий момент в версии 0.92 реализовано объединение по следующему алгоритму:
- Операция слияния происходит в фоновом потоке в с возможностью остановки операции;
- Если имена колонок совпадают, то происходит добавление данных в независимости от типа поля, в сравнении участвует только имя колонки.
- Можно выбирать сразу несколько файлов (выделяя через shift или ctrl);
Планируется в дальнейшем добавить возможность выбора режимов слияния файлов, таких как например возможность создавать новые колонки, которых нет в исходном файле, или копировать данные только с отсутствующих столбцов.
Итак что нужно сделать:
- Открыть файл dbf в который будем подгружать данные;
- Зайти в меню «Файл\Добавить(импорт)» или нажать ctrl+shift+A;
Как объединить dbf базы данных
26 Апр 2017 
Pumpdbf.exe представляет из себя консольное приложение для объединения DBF файлов, в один сводный файл. В данном приложении предусмотрено ведение лог файлов. Для работы не требуется BDE.
PUMPDBF.EXE [диск:]путь до DBF файлов [диск:]путь до нового DBF файла
В данном случае утилита объединения dbf файлов найдет все DBF файлы содержащиеся в папке C:\dbffiles (включая подпапки), после этого произведет анализ структуры dbf файлов и на основании структуры (названия полей, типы полей, размерность) создаст новый dbf файл (C:\all.dbf) и произведет загрузку в него данных из всех найденных файлов.
Объединение DBF файлов
Приложение протестировано в операционных системах: XP, Vista, Windows server 2008, 7.
Скачать программу объединения dbf файлов
(демонстрационная версия программы загружает не более 10 записей из каждого файла)
-
(832,000 байт) (394,446 байт) (321,065 байт)
История изменений
Добавлена возможность указания кодировки при объединении (dos, win)
При объединении не добавляется новая колонка FILE_NAME
Исправлена ошибка «InternalOpen: BufferSize too small!» Новая версия доступна для загрузки.
В общем статусе реализовано отображение оставшегося времени объединения dbf файлов
Доработан алгоритм определения структуры для итогового dbf файла.
Отображение общего статуса загрузки dbf файлов (обрабатываемая запись из общего количества)
Как объединить dbf файлы
Часто в процессе работы может возникнуть необходимость объединения содержимого файлов в один так сказать произвести слияние dbf. Объединение dbf происходит по одинаковым названиям колонок в файлах, то есть не обязательно, чтобы файлы имели одинаковую структуру. В настоящий момент в версии 0.92 реализовано объединение по следующему алгоритму:
- Операция слияния происходит в фоновом потоке в с возможностью остановки операции;
- Если имена колонок совпадают, то происходит добавление данных в независимости от типа поля, в сравнении участвует только имя колонки.
- Можно выбирать сразу несколько файлов (выделяя через shift или ctrl);
Планируется в дальнейшем добавить возможность выбора режимов слияния файлов, таких как например возможность создавать новые колонки, которых нет в исходном файле, или копировать данные только с отсутствующих столбцов.
Итак что нужно сделать:
- Открыть файл dbf в который будем подгружать данные;
- Зайти в меню «Файл\Добавить(импорт)» или нажать ctrl+shift+A;
Как объединить dbf базы данных
Имеется некоторое количество файлов в формате dbf, необходимо создать эксель файл с макросом при загрузке которого все "дбфки" которые находятся в одной папке с этим файлом подгрузились в него.
Надеюсь объяснил понятно. Зараннее благодарю за любую помощь в этом вопросе.
| Надеюсь объяснил понятно |
Как сказать. Вам-то, может, и понятно.
Вот только помощи с такой формулировкой задачи Вы вряд ли дождётесь.
Прикрепите к сообщению:
1) файл Excel в примером того, что должно получиться в итоге
2) папку с файлами dbf
Подробно опишите все нюансы (где макрос должен искать папку с этими dbf, и т.д.)
__ Полезные надстройки для Excel. Парсинг сайтов и файлов.
Макросы любой сложности на заказ. Мониторинг цен конкурентов
| EducatedFool |
| Посмотреть профиль |
| Найти ещё сообщения от EducatedFool |
Как сказать. Вам-то, может, и понятно.
Вот только помощи с такой формулировкой задачи Вы вряд ли дождётесь.
Прикрепите к сообщению:
1) файл Excel в примером того, что должно получиться в итоге
2) папку с файлами dbf
Подробно опишите все нюансы (где макрос должен искать папку с этими dbf, и т.д.)
объясню на примере. Имеется 2 dbf файла с названиями "1" и "2" ( на самом деле их может быть сколько угодно) нужно объединить всю информацию из этих файлов в один "макрос.xls", все три файла находятся в одной папке. То есть мне нужна возможность переноса этого файла в другую папку и что бы он там выполнил туже задачу.
Файлы с примером прикладываю.
никто не может помочь?
ну давайте тогда упростим ещё задачу.
В папке несколько дбф файлов (например 2) с названиями "1" и "2" нужно сделать xls файл с макросом на подобии "макрос"
з.ы.: файлы в предыдущем сообщении
Объединение двух файлов dbf в один

Для объединения необходимо выбрать два исходных файла, каталог объединенного файла и нажать на кнопку "Объединить файлы".
Тестировалась под платформой 8.3.10.24.66 на конфигурации УТ 10.3.
Скачать файлы
Специальные предложения












- Скопировать ссылку
- Перейти
- Скопировать ссылку
- Перейти
- Скопировать ссылку
- Перейти
- Скопировать ссылку
- Перейти
- Скопировать ссылку
- Перейти
- Скопировать ссылку
- Перейти
(6) Сколько угодно файлов легко объединяются при помощи древней DOSовской утилиты DBU.EXE, специально предназначенной для операций с файлами DBF: открываем первый файл, жмем F6 — «Append», выбираем второй файл, снова F6 — «Append» и т.д.
Основная сложность тут — запустить эту утилиту под современными версиями Windows.
Наверняка существуют и виндовые редакторы DBF, умеющие проделывать то же самое.
Объединение двух файлов dbf в один

В продолжение моей темы: 1С:Альфа-Авто Автосалон Автосервис: обмен с сайтом.
С помощью данного скрипта можно загружать в автоматическом режиме, по расписанию, данные сервисных книжек (ремонтов авто) из 1С:Альфа-Авто Автосалон Автосервис.
Также можно загружать данные в ручном режиме: для этого делается скрытая страница, где размещается специальная кнопка.
Комментарии размещенные внутри скрипта разъяснят логику и порядок действия.
Комментарии с "///// echo" использовались для отладки.
Дополнительно создана таблица для журналирования результатов загрузки данных.
Скрипт включает в себя защиту от SQL инъекций (думаю безопасность соблюдена в полной мере).
В кратце:
1. Пишется скрипт, который запускает этот.
2. Создается регламентное задание в WordPress, по которому запускается скрипт из п.1.
3. Этот скрипт осуществляет проверку на существование файла обмена в папке.
4. Если данные не новые, загрузка не производится.
5. Если данные новые, очищается таблица сервисных книжек.
6. Загружаются новые данные.
Собственно сам скрипт:
<?php // Полная загрузка сервисных книжек, создан 2023-01-05 12:44:55
global $wpdb2;
global $failure;
global $file_hist;
$failure=FALSE;
//подключаемся к базе
$wpdb2 = include_once ‘connection.php’; ; // подключаемся к MySQL
// если не удалось подключиться, и нужно оборвать PHP с сообщением об этой ошибке
if (!empty($wpdb2->error))
<
///// echo ‘<H2><b>Ошибка подключения к БД, завершение.</b></H2><br>’;
$failure=TRUE;
wp_die( $wpdb2->error );
>
$m_size_file=0;
$m_mtime_file=0;
$m_comment=»;
/////проверка существования файлов выгрузки из 1С
////файл выгрузки сервисных книжек
$file_hist = ABSPATH.’/_1c_alfa_exchange/AA_hist.csv’;
if (!file_exists($file_hist))
<
///// echo ‘<H2><b>Файл обмена с сервисными книжками не существует.</b></H2><br>’;
$m_comment=’Файл обмена с сервисными книжками не существует’;
$failure=TRUE;
>
/////инициируем таблицу лога
/////если не существует файла то возврат и ничего не делаем
if ($failure) <
///включает защиту от SQL инъекций и данные можно передавать как есть, например: $_GET[‘foo’]
///// echo ‘<H2><b>Попытка вставить запись в лог таблицу</b></H2><br>’;
$insert_fail_zapros=$wpdb2->insert(‘vin_logs’, array(‘time_stamp’=>time(),’last_mtime_upload’=>$m_mtime_file,’last_size_upload’=>$m_size_file,’comment’=>$m_comment));
wp_die();
///// echo ‘<H2><b>Возврат в начало.</b></H2><br>’;
return $failure;
>
/////проверка лога загрузки, что бы не загружать тоже самое
$masiv_data_file=stat($file_hist); ////передаем в массив свойство файла
$m_size_file=$masiv_data_file[7]; ////получаем размер файла
$m_mtime_file=$masiv_data_file[9]; ////получаем дату модификации файла
////создаем запрос на получение последней удачной загрузки
////выбираем по штампу времени создания (редактирования) файла загрузки AA_hist.csv, $m_mtime_file
///// echo ‘<H2><b>Размер файла: ‘.$m_size_file.'</b></H2><br>’;
///// echo ‘<H2><b>Штамп времени файла: ‘.$m_mtime_file.'</b></H2><br>’;
///// echo ‘<H2><b>Формирование запроса на выборку из лога</b></H2><br>’;
////препарируем запрос
$text_zaprosa=$wpdb2->prepare(«SELECT * FROM `vin_logs` WHERE `last_mtime_upload` = %s», $m_mtime_file);
$results=$wpdb2->get_results($text_zaprosa);
if ($results)
< foreach ( $results as $r)
<
////если штамп времени и размер файла совпадают, возврат
if (($r->last_mtime_upload==$m_mtime_file) && ($r->last_size_upload==$m_size_file))
///echo '<H2><b>Возврат в начало, т.к. найдена запись в логе.</b></H2><br>';
$insert_fail_zapros=$wpdb2->insert(‘vin_logs’, array(‘time_stamp’=>time(),’last_mtime_upload’=>$m_mtime_file,’last_size_upload’=>$m_size_file,’comment’=>’Загрузка отменена, новых данных нет, т.к. найдена запись в логе.’));
wp_die();
return $failure;
>
>
>
////если данные новые, пишем в лог запись о начале загрузки
/////echo ‘<H2><b>Попытка вставить запись о начале загрузки в лог таблицу</b></H2><br>’;
$insert_fail_zapros=$wpdb2->insert(‘vin_logs’, array(‘time_stamp’=>time(),’last_mtime_upload’=>0, ‘last_size_upload’=>$m_size_file, ‘comment’=>’Начало загрузки’));
////очищаем таблицу
$clear_tbl_zap=$wpdb2->prepare(«TRUNCATE TABLE %s», ‘vin_history’);
$clear_tbl_zap_repl=str_replace(«‘»,»`»,$clear_tbl_zap);
$results=$wpdb2->query($clear_tbl_zap_repl);
///// echo ‘<H2><b>Очистка таблицы сервисных книжек</b></H2><br>’;
if (empty($results))
<
///// echo ‘<H2><b>Ошибка очистки таблицы книжек, завершение.</b></H2><br>’;
//// если очистка не удалась, возврат
$failure=TRUE;
wp_die();
return $failure;
>
////загружаем данные
$table=’vin_history’; // Имя таблицы для импорта
//$file_hist Имя CSV файла, откуда берется информация // (путь от корня web-сервера)
$delim=’;’; // Разделитель полей в CSV файле
$enclosed='»‘; // Кавычки для содержимого полей
$escaped=’\