Разбор плоского файла данных для чтения / записи - PullRequest
0 голосов
/ 20 сентября 2018

Мне нужно подключиться к некоторым старым файлам базы данных C-tree Plus с 1998 года. Продукт снят с производства поставщиком, но все еще используется сегодня в текущих выпусках программного обеспечения.Мне нужно иметь возможность читать и писать, но нет доступного типа соединения ODBC, только доступ к файлам.Вот пример из них:

http://64.72.211.216/zip.dat

http://64.72.211.216/zip.idx

Большая часть содержимого, которое мне нужно, хранится в виде целых чисел или строк, я могу увидеть его с помощьюбазовый текстовый редактор, но есть также двоичные / UTF / HEX-символы, которые находятся в миксе и должны быть отфильтрованы.В файлах нет имен столбцов.

Мне нужно найти способ разобрать его в читаемую форму, такую ​​как csv, чтобы прочитать, а затем повернуть его обратно, чтобы записать.

Нет помощиЯ имею в виду, что никто из их компаний не знает, как это работает, после 20 с лишним лет с момента его разработки.Я провел хороший час, пытаясь убедить людей Faircom продать мне старый ODBC без какой-либо поддержки, но безрезультатно.Хотя некоторая документация все еще существует, библиотека ODBC для ее использования недоступна.

Я попытался связаться с Pervasive по поводу их DataConnect, но, очевидно, они прекратили анализ плоских файлов в своей последней версии.Они сказали, что в своей старой версии он основан на awk.

Мне показался интересным DataDirect от Progress.com, но я не получил от них никаких звонков, чтобы узнать, что возможно.

TextPipe Pro выглядит так, как будто это может работать для чтения, но я не думаю, что смогу писать с ним.

В Postgresql есть сторонние обертки данных, которые будут анализировать CSV, я рассмотрел попытку создания фильтра на основеCSV для моих данных, но я не был уверен, что это кроличья нора.

Я немного компетентен в C #, но не уверен, с чего начать.Насколько я понимаю, мне нужно определить «размер блока», который будет представлять одну строку, а затем преобразовать то, что будет каждый столбец фиксированной ширины, в ANSI из того, что есть сейчас.Затем экспортируйте каждую строку в формат CSV, который можно запросить.

Пожалуйста, кто-то скажет мне, что есть лучший способ.Может быть, библиотека для разбора, утилита, что-то, что может быть интегрировано в приложение C #, которое выполняется по расписанию в поисках обновлений.

1 Ответ

0 голосов
/ 19 октября 2018
  • какая версия использовалась для создания этого idx / dat?это DOS / старая версия Windows?или Unix / Mac?
  • попробуйте получить эту версию (она поставляется с полным api / source) и подходящий компилятор
  • , если вы получите исходный код, который вы можете перекомпилировать, добавьте несколько оберток заголовков вваш проект C # и использовать C Dll (https://www.codeproject.com/Articles/9826/How-to-create-a-DLL-library-in-C-and-then-use-it-w)
  • я знаю его старый, но тогда вы можете просто читать / записывать эти типы файлов с C api c-tree (по крайней мере, это может означать, что вам нужноиспользовать какой-то старый компилятор DOS / Windows для тестирования)
  • это САМОЕ идеальное начало для анализа формата (см. этот инструмент: https://www.awportals.com/aw/archives/newsgroups/thread_468/)
  • возможно, Faircom все еще получил старую версию - скажите имвам нужно найти ошибки в старом программном обеспечении, которые не могут быть заменены, и эта библиотека отсутствует - не говорите им, что хотите проанализировать формат
  • или найти старого посредника или людей, занимающихся интернетом (google, reddit, stackoverflow) поговорить о c-tree и спросить их, есть ли у них версия для вас «попробуйте найти C-Tree Plus Vx.y 1988 года» - хороший вопрос на этих платформах
  • всегда повторная ссылкамежду другой платформойм-пост
...