FoxPro для C#: какой лучший метод между ODBC, OLE DB или другим?

Нам нужно прочитать данные из FoxPro 8 с помощью C#. Я собираюсь выполнить некоторые операции и передать некоторые из этих данных в базу данных SQL Server. Мы не уверены, какой лучший способ прочитать эти данные.

Я видел OLE DB и ODBC; что лучше?

ТРЕБОВАНИЯ:

  1. Экспортная программа будет работать каждую ночь, но моя компания работает 24 часа в сутки.
  2. DBF иногда может быть огромным.
  3. Нам НЕ нужно изменять данные.
  4. Наша система, использующая FoxPro, довольно нестабильна: мне нужно найти способ, который АБСОЛЮТНО не портит данные, а в идеале не блокирует DBF-файлы при чтении.
  5. Скорость — второстепенное требование: она должна быть быстрой, но требование №4 — самое важное.

person Bestter    schedule 25.09.2012    source источник
comment
+1 за то, что все еще приходится иметь дело с DBF FoxPro, как и я :)   -  person Tim B James    schedule 25.09.2012
comment
VFP ODBC устарел уже несколько лет.   -  person pmoleri    schedule 25.09.2012


Ответы (4)


Я бы использовал коннектор OLEDB - он обновился гораздо позже, быстрее и лучше справляется с памятью.

Если вы просто читаете данные из DBF через драйвер OLEDB, я бы не беспокоился о блокировке на уровне записи или файла или повреждении данных. Все, что вам нужно сделать, это обрабатывать исключения в вашем коде C#, например, когда какой-то процесс в вашем приложении FoxPro имеет монопольно открытый DBF, и вы не можете его прочитать.

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

Я предполагаю, что это все в одной локальной сети? Если он должен работать через Интернет, вам необходимо исследовать раскрытие данных FoxPro через веб-службу.

Наконец, есть и другие варианты доступа к файлам DBF.

Sybase также предоставляет ODBC и OLEDB драйверы, которые могут обращаться к файлам DBF, однако они не могут использовать триггеры FoxPro, хранимые процедуры и так далее. Хотя в вашем случае это почти наверняка не имеет значения.

person Alan B    schedule 25.09.2012

Согласно этой статье MSDN, предлагает использовать Visual FoxPro OLE DB Provider. Посмотрите статью, и в ней приведены примеры того, как использовать поставщик OLE DB и как запрашивать данные из источника данных DBF.

person Icemanind    schedule 25.09.2012

Также довольно легко написать код в VFP, который будет выгружать данные в CSV или XML — подумайте о том, чтобы добавить этот код в свое приложение FoxPro. Обработка этих файлов может быть намного проще, чем попытка подключения к нестабильной базе данных FoxPro.

person William Mioch    schedule 26.09.2012
comment
В порядке. После этого мне нужен другой инструмент, чтобы импортировать его в SQL Server? Я не думаю, что это самый эффективный способ... - person Bestter; 02.10.2012
comment
Это не должно быть производительным - это самое простое и наименее вероятное повреждение ваших данных, которые вы указали как более важные, чем скорость. Что касается импорта в SQL Server, у Google есть 3,5 миллиона результатов. - person William Mioch; 03.10.2012
comment
Я понимаю. Если другое агентство не может использовать OLE DB или испытывает проблемы с его использованием, я предложу эту идею. Они делают тест, как прямо сейчас! Спасибо - person Bestter; 04.10.2012

В Codeplex есть инструмент LinqToVfp. См.: http://linqtovfp.codeplex.com.

В нем есть несколько хороших образцов, которые помогут вам начать работу.

person MattSlay    schedule 09.10.2012