Форум: "Базы";
Поиск по всему сайту: delphimaster.net;
Текущий архив: 2002.04.25;
Скачать: [xml.tar.bz2];




Вниз

Пимогите разобраться с DOA. 


Grrey   (2002-04-03 16:06) [0]

А точнее с компоненитом TOraLoad. Пытаюсь написвть прогу для перекачки данных из IB базы в Oracle базу. Я делаю так:
Создаю в Oracle новую таблицу, аналогичную базе в IB (автоматическое создание таблицы планируеться в будующем). Потом с помощью IBQuery выбираю все записи и, перебирая их всех, пытаюсь записать в Oracle. Но на момент выполнения команды OraLoader.Load база почему-то выдает сообщение "invalid column name". Прошу обратить внимание, что это сообщение выдаеться именно при выполнении команды load, а не, как следовало бы ожидать, при попытки записать данные!!
Может кто-нибудь сможет помочь?



{bas}   (2002-04-03 16:24) [1]

Я не знаю как в DAO, но чего ты просто не хочешь с помощью Query в цикле
DAOQuery.Text := "insert into tb values(:id,:name,:subname)";
DAOQuery.ParamByName("id").Value := IBQuery.FieldByNAme("id").Value;
// end so on ......
DAOQuery.ExecSql; // ну или около того
IBQuery.Next;
Ты же все равно перебираешь данные.



grrey   (2002-04-03 16:55) [2]

С помощью этого компонента можно все быстрее сделать. Во всяком случае так в доке написанно!



EAlexander   (2002-04-03 17:16) [3]

так при Load идет загрузка данных.
наверно колонки не так назвал.



Sergey13   (2002-04-04 09:44) [4]

Что за версия DOA. У меня в 3.4.2 есть TOracleDirectPathLoader а не TOraLoad. Это то?
Сам не юзал, но вот пример из доки, может поможет

// Perform the Direct Path Load
procedure LoadRecords;
var Loader: TOracleDirectPathLoader;
i, Row: Integer;
begin
// Create a Loader at run time
Loader := TOracleDirectPathLoader.Create(nil);
try
// Set the session and table name
Loader.Session := MainSession;
Loader.TableName := "record_data";
// Get the default columns for the record_data table
Loader.GetDefaultColumns(False);
// Prepare the loader
Loader.Prepare;
// Process all data in batches of <MaxRows> records
Row := 0;
for i := 0 to Records.Count - 1 do
begin
// Copy one record to the array
Loader.Columns[0].SetData(Row, @Records[i].Line, 0);
loader.Columns[1].SetData(Row, @Records[i].Text[1],
Length(Records[i].Text));
Inc(Row);
// The array is filled, or we have preocessed all records:
// load this batch of records
if (Row = Loader.MaxRows) or (i = Records.Count - 1) then
begin
try
Loader.Load(Row);
except
// In case of an error: show where things went wrong
// and abort the load operation
on E:EOracleError do
begin
ShowMessage(E.Message + #13 +
"Row = " + IntToStr(Loader.LastRow) + #13 +
"Col = " + IntToStr(Loader.LastColumn));
Loader.Abort;
raise;
end;
end;
Row := 0;
end;
end;
// Commit the loaded data
Loader.Finish;
finally
Loader.Free;
end;
end;



А на Оракловой таблице никакой тригер не висит?



Grrey   (2002-04-05 08:46) [5]

To EAlexander> Я к ним (к колонкам) но номерам обращаюсь, так, как это было показанно в примере. И я точно уверен, что эти столбцы есть.
To Sergey13> У меня ODAC v3.5, может это разные пакеты. Тогда прошу извинения за не правильную информацию! У меня этот компонент называется TOraLoader. И таких функций как Loader.GetDefaultColumns(False); и
Loader.Prepare; здесь я не встречал.
Эту таблицу я только что сам создал, и естественно там никакого тригера быть не может.
В моей доке есть следующий пример:
procedure TfmMain.btLoadClick(Sender: TObject);
var
TickInfo: TTickInfo;
begin
TickInfo := TTickInfo.Create;
try
TickInfo.Start;

OraLoader.Load; // loading rows

StatusBar.Panels[1].Text := "Time: " + TickInfo.GetIntervalSt;

if Query.Active then
Query.Refresh;
finally
TickInfo.Free;
end;
end;

procedure TfmMain.PutData(Sender: TOraLoader);
var
Count: integer;
i: integer;
begin
Count := StrToInt(edRows.Text);
for i := 1 to Count do begin
Sender.PutColumnData(0, i, i);
Sender.PutColumnData("NUM", i, Random(100));
//Sender.PutColumnData(1, i, Random(100));
Sender.PutColumnData(2, i, Random*100);
Sender.PutColumnData(3, i, "abc01234567890123456789");
Sender.PutColumnData(4, i, Date);
end;
end;



Sergey13   (2002-04-05 09:38) [6]

2Grrey (05.04.02 08:46)
>To Sergey13> У меня ODAC v3.5, может это разные пакеты

Да так, чють-чють 8-)




Форум: "Базы";
Поиск по всему сайту: delphimaster.net;
Текущий архив: 2002.04.25;
Скачать: [xml.tar.bz2];




Наверх





Память: 0.73 MB
Время: 0.022 c
6-81031           Bodia                 2002-02-12 11:44  2002.04.25  
Как росшарить диски!


3-80734           Sewix                 2002-04-02 23:37  2002.04.25  
Нужна альтернатива Qreport


3-80798           Grrey                 2002-04-03 16:06  2002.04.25  
Пимогите разобраться с DOA.


6-81023           Evgeny!               2002-02-13 16:45  2002.04.25  
Свой proxy


14-81046          lipskiy               2002-03-19 21:45  2002.04.25  
По поводу XP и убитого винта - шутка дубль два или что это?