Как прочитать файл VFP .dbf

#sql #sql-server #database #foxpro

#sql #sql-сервер #База данных #foxpro

Вопрос:

Я должен прочитать два файла .dbf, которые пришли с сервера VFP в SQL, и манипулировать ими. Они находятся в папке на сервере. Во-первых, я установил драйвер VFPOLEDB, драйвер ODBC и его обновление. Я успешно создал связанный сервер с бесплатными таблицами и протестировал его в SQL, и он говорит, что соединение в порядке, и там есть вещи. Кажется, я все еще не могу даже взглянуть на файлы. Кто-нибудь видит что-то неправильное в моем коде? Или какие-либо советы? Пример кода известного рабочего кода? Я нашел много примеров в Интернете, но когда я применяю много часов, которые я потратил на их изменение, они все равно не работают.

Вот мой код:

 Select * From OPENQUERY(LINKEDSVR, 'Select * from employee.dbf') 
  

Информация о параметре LINKEDSVR:

Поставщик: поставщик Microsoft OLE DB для драйверов ODBC
Название продукта: Драйвер Microsoft Visual FoxPro
Источник данных: linkedfoxpro

Конфигурация ODBC linkedfoxpro:

Имя источника
данных: linkedfoxpro Тип базы данных: Путь к каталогу свободной таблицы: c:somefolder

Драйвер: Microsoft FoxPro VFP Drver (*.dbf)

Спасибо!

Комментарии:

1. О, и ошибка, которую я получаю при выполнении этого запроса: что имеет смысл, но файл dbf также содержит все свои «таблицы конструкторов и индексы» со своего сервера foxpro в той же папке: поставщик OLE DB «MSDASQL» для связанного сервера «LINKEDSVR» вернул сообщение «[Microsoft][Драйвер ODBC Visual FoxPro] Индекс не соответствует таблице. Удалите индексный файл и заново создайте индекс «. Сообщение 7350, уровень 16, состояние 2, строка 2 Не удается получить информацию о столбце от поставщика OLE DB «MSDASQL» для связанного сервера «LINKEDSVR».

2. Для тех из вас, кто тоже зашел в тупик с этой проблемой, после многих часов я случайно придумал исправление, которое по какой-то причине сработало . , , Я удалил файл .CDX, который SQL генерирует из файлов FoxPro. Затем я снова открыл SQL, и он начал работать с тем же кодом, что и выше !…. Проблема решена! Если кто-нибудь может объяснить мне, почему это произошло, пожалуйста, сделайте это! * ПРИМЕЧАНИЕ: в этих файлах FoxPro никогда не изменяются данные / индексы.

Ответ №1:

Эти файлы CDX не генерируются SQL — это индексный файл, созданный / используемый VFP. Они очень подвержены повреждению, поэтому вполне вероятно, что CDX уже был поврежден, когда вы его получили или в пути.

Удалив файл CDX, вы удалили все индексы из таблицы, а также источник ошибки.