将Access表导入oracle

将Access表导入oracle,oracle,ms-access,Oracle,Ms Access,将表导入到oracle时遇到问题。导入时,会导入一个字段,例如: 在access中,我有'20200'并作为'12535'导入到oracle的access中的'20'或'125.35' 在access中它声明为数字,在oracle中它已更改为文本、浮点 //-----------------------------------------------------------------------------------编辑----------- 这只是一个带来问题的领域。access中的字段声

将表导入到oracle时遇到问题。导入时,会导入一个字段,例如:
在access中,我有'20200'并作为'12535'导入到oracle的access中的'20'或'125.35'

在access中它声明为数字,在oracle中它已更改为文本、浮点

//-----------------------------------------------------------------------------------编辑-----------

这只是一个带来问题的领域。access中的字段声明为number,当我导入表以访问它时,将该字段转换为二进制字符

导入OK,然后我将该类型更改为float、text或其他,当我将信息导入该表时,它会导入如下示例中的字段:

在access:'20200'->到oracle'20'

在access:'125.35'->到oracle'12535'

这是我使用的代码:

Option Compare Database

Function load_tables()

    Dim resposta

    varReturn = SysCmd(acSysCmdInitMeter, " ", 36)
    varReturn = SysCmd(acSysCmdSetStatus, " ")

    DoCmd.SetWarnings False

    varReturn = SysCmd(acSysCmdSetStatus, "Insert In Emb")
    DoCmd.RunSQL "INSERT INTO INFAR_Emb( Emb_ID, N_Registo, Descr, Compart, " & _
                                    "Data_Compart, Grupo_Hom_ID, Me_ID, " & _
                                    "Data_Alter, Data_Alt_Comp) " & _
                "SELECT [Emb_ID], [N_Reg], [Descr], [Compart], " & _
                                    "[Data_Compart], [Grupo_Hom_ID], " & _
                                    "[Me_ID], [Data_Alter], [Data_Alt_Comp] " & _
                                    "FROM [Emb] where [Emb_ID]=257"

嗯,我认为不可能将字段/列定义为
float precison 10,数字8,3,nvarchar 15
——除非您已经尝试了所有选项;然而,我将假设它实际上是
FLOAT(8)

如果我错了,请在SQL*Plus(或等效的Oracle客户端)中尝试以下操作

并发布相关字段/列的结果

根据我的假设。问题是浮点数,如果你输入一个精度,它是一个,而不是小数。如果你乘以0.30103,你将得到它所能保持的精度的小数位数的近似值。在
浮点(8)
的情况下,它是~2

这就解释了
125.35
的问题,它是
125
,而不是
20200
(我想你在提问时添加了逗号),这留下了更多的思考


将字段/列更改为
数字(无精度或刻度)并对其进行处理可能就足够了。

只需找出错误所在。。我必须再次创建odbc以假定表的新值。进口现在很有效:)。。tks all

我不清楚你到底想做什么,你看到了什么。也许Access中的一两个问题字段定义及其在Oracle中的对应项会有所帮助。还有,你看到了什么,你想看到什么。刚刚添加了关于问题的新信息,我们还需要更多。。。INFAR_Emb和Emb在各自的数据库中是如何定义的,以及哪个字段出错。使用DoCmd.RunSQL是一个糟糕的主意,最重要的是,因为您已经关闭了警告,这意味着它将运行更新并丢弃所有错误。这意味着您的数据已损坏,因为您不知道哪些已正确处理,哪些未正确处理。使用CurrentDB执行SQL。执行strSQL、dbFailOnError,如果它抛出错误,您将发现它们是什么。EMB是访问表,INFAR_EMB是oracle表。访问字段定义为数字(双精度和自动小数)。oracle字段已定义为:浮点精度10、数字8、3、nvarchar 15
describe INFAR_Emb