powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / Sybase ASA 9. Работа с DBF
8 сообщений из 8, страница 1 из 1
Sybase ASA 9. Работа с DBF
    #36418841
Hamber
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Обычный DBF файл.

На сервере сделал алиас ODBC через Microsoft dbf (v.4.00.6305).

Делаю в Sybase Central Remote Server на данный алиас. Делаю proxy table. Показывает структуру, добавляю.

Создается прокси таблица. Открываю и выдает следующее.


Подскажите как правильно создать proxy таблицу с DBF, чтобы с ней можно было работать?
...
Рейтинг: 0 / 0
Sybase ASA 9. Работа с DBF
    #36429345
Hamber
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Никто не подскажет?
...
Рейтинг: 0 / 0
Sybase ASA 9. Работа с DBF
    #36429813
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Никто.
Работа с dbf одна из самых элементарных операций, причем уже разжеванная в документации.
Где там можно ошибиться я совершенно не представляю.

Показывай полный скрипт создания удаленного сервера и прокси таблиц.
Убедись что между созданием прокси-таблицы и доступом к ней ни таблицы, ни база не перемещались и сеть не перемонтировалась. Убедись что сервер всегда работает из под одного и того-же логина ОС.
...
Рейтинг: 0 / 0
Sybase ASA 9. Работа с DBF
    #36430653
Hamber
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1. На сервере в Data Sources (ODBC) на вкладке System DSN создаю новый Data Source с именем ostatkibuh.
2. В качестве драйвера выбираю Microsoft dBase Driver (*.dbf)
3. Нажимаю Select Directory выбираю C:\CVSBuh и ставлю Version: dBase III. В этой папке лежит файл C:\CVSBuh\ostatki.dbf
4. Открываю Sybase Central.
5. Соединяюсь к серверу. иду в Remote Servers.
И создаю следующее:

В коде это выглядит так:

Код: plaintext
CREATE SERVER "ostatkibuh" CLASS 'ODBC' USING 'ostatkibuh';

Затем создаю Proxy Table:

Код: plaintext
1.
2.
3.
4.
5.
CREATE EXISTING TABLE "DBA"."ostatki" (
	"DOGOVOR" VARCHAR( 28 ) NULL,
	"NAZNPLAT" DOUBLE NULL,
	"TIPOST" DOUBLE NULL,
	"SUMMA" DOUBLE NULL
) AT 'ostatkibuh;C:\\CSVBUH;;ostatki';

Cтруктуру показывает (поля и тип полей), но данные не отображаются.

Ошибка, указанная выше.
...
Рейтинг: 0 / 0
Sybase ASA 9. Работа с DBF
    #36430700
Sergey Orlov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я в свое время пытался использовать dbf как прокси таблицу, так вот, все чудно работало и работает под NT4, как только ставишь что-то выше (w2k,XP,w2k3 ...) , то конец, в результате я отказался от этой затеи, т.е. использовать как прокси, сейчас просто вливаю данные в ASA, там их обрабатываю и выливаю обратно
...
Рейтинг: 0 / 0
Sybase ASA 9. Работа с DBF
    #36431578
Hamber
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сервер на w2k.

Подскажи а как ты делаешь "вливание" данных в ASA из DBF?
...
Рейтинг: 0 / 0
Sybase ASA 9. Работа с DBF
    #36431846
Sergey Orlov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
HamberСервер на w2k.

Подскажи а как ты делаешь "вливание" данных в ASA из DBF?
через dbisql

Выгрузка выглядит так
Create PROCEDURE "DBA"."procOutputToDBF"()
begin
declare s1 text;
declare s2 varchar(255);
declare s3 varchar(255);
declare NFile varchar(64);
declare idDate_ integer;
set idDate_=funcretIdDate(funcSearchDateMin('2006-1-1'));
set s2=string('C:\\Database\\Valuta\\valuta.dbf');
set s1=string('-- Выгрузка данных --',"char"(10));
set NFile=string('C:\\ASADB\\ValDBFOut.sql');
call xp_write_file(NFile,s1);
/* считывеем файл скрипта */
set s1=xp_read_file(NFile);
set s1=string(s1,'SELECT funcRetDateID(idDate) as date_Curs,1 as N,funcRetValutCodeD(idValut) as Code_Valut, Col,funcRetValutName(idValut) as Name_Valut,Curs FROM tblCurs');
set s1=string(s1,' where ( funcRetValutCodeD(idValut) in (840,978) and idDate>=',idDate_,') order by iddate,idvalut;');
set s1=string(s1,"char"(10));
call xp_write_file(NFile,s1);
set s1=xp_read_file(NFile);
set s1=string(s1,'Output to ',s2,' format foxpro;',"char"(10));
call xp_write_file(NFile,s1);
set s1=string('dbisqlc -q -c "eng=',@@servername,';DBn=',current database,';commlinks=tcpip;charset=cp1251;integrated=yes" ');
set s1=string(s1,NFile);
call xp_cmdshell(s1)
end

Особое отличие в строке подключения к базе charset для выгрузки в необходимой кодировке

Загрузка

CREATE PROCEDURE "DBA"."procFrom_DBF"() /* parameters,... */
begin
declare s1 text;
declare mError integer;
declare NFile varchar(255);
declare Path2SVh varchar(255);
set Path2SVh='c:\\BASE\\';
/* убиваем данные во временных таблицах */
if exists(select * from systable where Table_name = 'vl1') then
drop table DBA.vl1
end if;
/* формируем файл скрипта для dbisqlc */
set s1=string('-- загрузка данных --',"char"(10));
set NFile=string('C:\\base\\SVH_DBF.sql');
/* зАПИСЫВАЕМ файл скрипта */
set s1=string(s1,'input into vl1 from ',Path2SVh,'ARCHIEVE\\VL.dbf format foxpro;',"char"(10));
set s1=string(s1,'exit;',"char"(10));
call xp_write_file(NFile,s1);
/* закачка файлов dbf во времнные таблицы*/
set s1='start /wait dbisqlc -q -c "charset=cp866;eng=vtt;dbn=vtt;integrated=yes;commlinks=tcpip;" ';
set s1=string(s1,NFile);
call xp_cmdshell(s1,'no_output');
commit work
end
Здесть dbf в 866 кодировке, а база в 1251
...
Рейтинг: 0 / 0
Sybase ASA 9. Работа с DBF
    #36432065
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hamber
3. Нажимаю Select Directory выбираю C:\CVSBuh
....
Код: plaintext
1.
2.
3.
4.
5.
CREATE EXISTING TABLE "DBA"."ostatki" (
	"DOGOVOR" VARCHAR( 28 ) NULL,
	"NAZNPLAT" DOUBLE NULL,
	"TIPOST" DOUBLE NULL,
	"SUMMA" DOUBLE NULL
) AT 'ostatkibuh;C:\\CSVBUH;;ostatki';

Либо убери стандартную директорию из ODBC DSN, либо не указывай ее при создании таблицы.
Удаивать обратный слеш в данном случае тоже не нужно.

HamberCтруктуру показывает (поля и тип полей), но данные не отображаются.
Поля показываются потому что ты их вручную задал.

Если каталог с dbf файлами задан внутри DSN, то для создания прокси-таблицы достаточно:
Код: plaintext
CREATE EXISTING TABLE "DBA"."ostatki" AT 'ostatkibuh;;;ostatki';
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / Sybase ASA 9. Работа с DBF
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]