Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 SQL 2000 to DBF (FoxPro)  [new]
santon_82
Member

Откуда:
Сообщений: 9
Добрый день всем!
Данные: SQL 2000, DBF (FoxPro)
Задача: Необходимо сделать экспорт данных выборки из SQL 2000 в DBF файл (dbf файл + fpt файл).
Перед вставкой данных выборки SQL 2000 в DBF-ку, файл DBF необходимо очистить.
На данный момент пока добился только чтения DBF файла:
select * from
openrowset ('VFPOLEDB','<путь к файлу.dbf>';;,'select * from <имя файла dbf>')

Если кто-то имел дело с подобным (очищение dbf, вставка данных) откликнитесь. Буду благодарен
примеру конкретного кода. Заранее благодарю.
12 сен 11, 05:32    [11261895]     Ответить | Цитировать Сообщить модератору
 Re: SQL 2000 to DBF (FoxPro)  [new]
aleks2
Guest
1. Не занимайтесь закатом солнца вручную.
2. Экспортируйте в csv/txt.
3. FoxPro умеет работать с ними.
12 сен 11, 06:02    [11261906]     Ответить | Цитировать Сообщить модератору
 Re: SQL 2000 to DBF (FoxPro)  [new]
santon_82
Member

Откуда:
Сообщений: 9
aleks2
1. Не занимайтесь закатом солнца вручную.
2. Экспортируйте в csv/txt.
3. FoxPro умеет работать с ними.


Цель: экспорт только в dbf.
12 сен 11, 06:15    [11261911]     Ответить | Цитировать Сообщить модератору
 Re: SQL 2000 to DBF (FoxPro)  [new]
Владимир СА
Member

Откуда:
Сообщений: 7915
Взять VFP. И с его помощью коннектиться к SQL и перекачивать в таблицы dbf.
12 сен 11, 07:06    [11261931]     Ответить | Цитировать Сообщить модератору
 Re: SQL 2000 to DBF (FoxPro)  [new]
santon_82
Member

Откуда:
Сообщений: 9
Владимир СА
Взять VFP. И с его помощью коннектиться к SQL и перекачивать в таблицы dbf.


Мне нужно имено так, как я описал в заданиии. Только из SQL в dbf.
12 сен 11, 08:09    [11261978]     Ответить | Цитировать Сообщить модератору
 Re: SQL 2000 to DBF (FoxPro)  [new]
Владимир СА
Member

Откуда:
Сообщений: 7915
santon_82
Мне нужно имено так, как я описал в заданиии. Только из SQL в dbf.

santon_82
Задача: Необходимо сделать экспорт данных выборки из SQL 2000 в DBF файл (dbf файл + fpt файл).
Когда разберетесь, то хотелось бы увидеть ответ... Особенно получение fpt файла... На сколько я помню - это мемо-поля...
12 сен 11, 08:16    [11261988]     Ответить | Цитировать Сообщить модератору
 Re: SQL 2000 to DBF (FoxPro)  [new]
santon_82
Member

Откуда:
Сообщений: 9
Владимир СА
santon_82
Мне нужно имено так, как я описал в заданиии. Только из SQL в dbf.

santon_82
Задача: Необходимо сделать экспорт данных выборки из SQL 2000 в DBF файл (dbf файл + fpt файл).
Когда разберетесь, то хотелось бы увидеть ответ... Особенно получение fpt файла... На сколько я помню - это мемо-поля...


Да-да, насколько мне объяснили, fpt для мемо-полей
12 сен 11, 08:42    [11262027]     Ответить | Цитировать Сообщить модератору
 Re: SQL 2000 to DBF (FoxPro)  [new]
AndreTM
Member

Откуда: Где-то в вологодских лесах...
Сообщений: 6900
santon_82,

Вм же посоветовали путь решения...
Поймите - TSQL'ю глубоко и надолго на формат представления DBASE4.
Спецификации DBF+FPT имеются ТОЛЬКО для FoxPro.
Соответственно, выдать данные в таком формате вы сможете только двумя путями:
- либо напрямую в существующие таблицы фокса, используя ODBC. При этом вы должны понимать, как заполняются memo-поля
- либо прямым файловым доступом к ФС, при этом вы должны понимать, как заполняется вся структура DBF, вся структура FPT...
12 сен 11, 09:34    [11262138]     Ответить | Цитировать Сообщить модератору
 Re: SQL 2000 to DBF (FoxPro)  [new]
santon_82
Member

Откуда:
Сообщений: 9
AndreTM
santon_82,
- либо напрямую в существующие таблицы фокса, используя ODBC. При этом вы должны понимать, как заполняются memo-поля


Можно про этот путь поподробнее?
12 сен 11, 10:54    [11262555]     Ответить | Цитировать Сообщить модератору
 Re: SQL 2000 to DBF (FoxPro)  [new]
Sergey Sizov
Member

Откуда:
Сообщений: 1576
santon_82,
я уже не единожды давал ссылки на приведенное тут решение.
12 сен 11, 11:11    [11262659]     Ответить | Цитировать Сообщить модератору
 Re: SQL 2000 to DBF (FoxPro)  [new]
AndreTM
Member

Откуда: Где-то в вологодских лесах...
Сообщений: 6900
Ну если грубо, то примерно так:
- Подключаетесь к существующей базе/таблице. ConnectionStrings, думаю, найти не проблема. При подключении - проверяетесь на вид текущего доступа.
- Делаете DELETE-SQL фокса ('delete all')
- Делаете INSERT-SQL фокса ('insert ... values (...)'). При записи мемо-полей - формируйте текстовое значение, где строки будут разбиты CR (chr(13)). Помните, что MEMOWIDTH (в стандарте) в фоксе ограничен значением 255, так что укладывайте длину каждой из строк в это значение
12 сен 11, 11:17    [11262685]     Ответить | Цитировать Сообщить модератору
 Re: SQL 2000 to DBF (FoxPro)  [new]
santon_82
Member

Откуда:
Сообщений: 9
AndreTM
Ну если грубо, то примерно так:
- Подключаетесь к существующей базе/таблице. ConnectionStrings, думаю, найти не проблема. При подключении - проверяетесь на вид текущего доступа.
- Делаете DELETE-SQL фокса ('delete all')
- Делаете INSERT-SQL фокса ('insert ... values (...)'). При записи мемо-полей - формируйте текстовое значение, где строки будут разбиты CR (chr(13)). Помните, что MEMOWIDTH (в стандарте) в фоксе ограничен значением 255, так что укладывайте длину каждой из строк в это значение


Сделал линкед сервер:
EXEC sp_addlinkedserver
@server = 'FOX_OLEDB',
@provider = 'VFPOLEDB',
@srvproduct = '',
@datasrc ='путь',
@provstr = 'Collating Sequence=RUSSIAN'

select * from FOX_OLEDB...[путь\имя dbf] - работает с локального компьютера

insert into FOX_OLEDB...[[путь\имя dbf] values (1,2, '1899-12-30 00:00:00.000', 'qqq', .2, 'boo!') - работает только на самом сервере, на локальной машине выходит ошибка:

Could not obtain a required interface from OLE DB provider 'VFPOLEDB'.
OLE DB error trace [OLE/DB Provider 'VFPOLEDB' IRowsetChange::QueryInterface returned 0x80004002: IRowsetChange].

Может какого-то доступа не хватает? Кто что знает по этому поводу?
12 сен 11, 13:35    [11263678]     Ответить | Цитировать Сообщить модератору
 Re: SQL 2000 to DBF (FoxPro)  [new]
Sergey Sizov
Member

Откуда:
Сообщений: 1576
santon_82
insert into FOX_OLEDB...[[путь\имя dbf] values (1,2, '1899-12-30 00:00:00.000', 'qqq', .2, 'boo!') - работает только на самом сервере, на локальной машине выходит ошибка:

Could not obtain a required interface from OLE DB provider 'VFPOLEDB'.
OLE DB error trace [OLE/DB Provider 'VFPOLEDB' IRowsetChange::QueryInterface returned 0x80004002: IRowsetChange].

Может какого-то доступа не хватает? Кто что знает по этому поводу?
А Вы размечтались, что сервер полезет к Вам на клиентскую машину?
12 сен 11, 15:12    [11264393]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить