W
websoul
Unregistered / Unconfirmed
GUEST, unregistred user!
我想从PARADOX向ORCALE8移植二进制数据,
用DATA PUMP转换失败,改为用程序转换
(采用UPDATESQL提交方式)。
原PARADOX中数据定义如下:
VERSION ALPHA(30) (主键)
MODIDATE ALPHA(14)
SYMBOL BINARY (二进制数:存储矢量图形)
ORCALE8中数据定义如下:
VERSION VARCHAR2(30)(主键)
MODIDATE VARCHAR2(14)
SYMBOL BLOB (二进制数:存储矢量图形)
测试程序如下:
DataBase1.Connected:=True; //PARADOX数据库
DataBase2.Connected:=True; //ORCALE数据库
Table1.Active:=True; //PARADOX数据表
Query2.Active:=True; //ORCALE数据表
Query2.Edit;
B1:=TBlobStream.Create(Table1Symbol,bmRead);
//读出原PARADOX BLOB数据
B2:=TBlobStream.Create(Query2Sym,bmWrite);
//对应于ORACLE的BLOB字段
B2.CopyFrom(B1, B1.Size); //复制流
Query2Version.Value:=Table1Version.Value ;
Query2ModiDate.Value:=Table1ModiDate.Value ;
if Query2.State in [dsEdit,dsInsert] then
Query2.Post; //第一次提交
if Query2.UpdatesPending then
DataBase2.ApplyUpdates([Query2]); //第二次提交
B1.Free;
B2.Free;
Table1.Active:=FALSE;
Query2.Active:=FALSE;
结果在第二次提交处出错:
General SQL error.
ORA-01461 仅可以为插入LONG列的LONG值赋值。
请各位指点,谢谢!
用DATA PUMP转换失败,改为用程序转换
(采用UPDATESQL提交方式)。
原PARADOX中数据定义如下:
VERSION ALPHA(30) (主键)
MODIDATE ALPHA(14)
SYMBOL BINARY (二进制数:存储矢量图形)
ORCALE8中数据定义如下:
VERSION VARCHAR2(30)(主键)
MODIDATE VARCHAR2(14)
SYMBOL BLOB (二进制数:存储矢量图形)
测试程序如下:
DataBase1.Connected:=True; //PARADOX数据库
DataBase2.Connected:=True; //ORCALE数据库
Table1.Active:=True; //PARADOX数据表
Query2.Active:=True; //ORCALE数据表
Query2.Edit;
B1:=TBlobStream.Create(Table1Symbol,bmRead);
//读出原PARADOX BLOB数据
B2:=TBlobStream.Create(Query2Sym,bmWrite);
//对应于ORACLE的BLOB字段
B2.CopyFrom(B1, B1.Size); //复制流
Query2Version.Value:=Table1Version.Value ;
Query2ModiDate.Value:=Table1ModiDate.Value ;
if Query2.State in [dsEdit,dsInsert] then
Query2.Post; //第一次提交
if Query2.UpdatesPending then
DataBase2.ApplyUpdates([Query2]); //第二次提交
B1.Free;
B2.Free;
Table1.Active:=FALSE;
Query2.Active:=FALSE;
结果在第二次提交处出错:
General SQL error.
ORA-01461 仅可以为插入LONG列的LONG值赋值。
请各位指点,谢谢!