用sql server 2005 的导入导出向导把数据(表aa)
导入orcale
查询的时候用select * from aa 能查到
select aa.id from aa 或select id from aa(id是列名)
说id标识符无效
好像很多人都遇到这个问题,但是都没有解决好我想问
1.产生这个问题的原因是什么?
2.是不是要先在oracle里建好结构才行?
3.比较好的导入方法是什么?

解决方案 »

  1.   

    1,原因是表结构大小写敏感造成的。由于导入时DTS建表时把字段都加上的双引号,造成字段名被强制成小写。你必须用:
    select "id" from aa; 的方式来查询。
    2,通常是推荐先建表再导数据。这样不但可以避免这种大小写问题,可以设定表的各种存储参数。
    3,sql server 导入导出其实是一个不错的工具,使用很简单。当然你要做复杂处理的话,有很多ETL工具可供选择。
      

  2.   

    为什么加上双引号,字段名就被强制成小写?
    怎么才能避免这个问题先建表再导数据,DTS说目标数据源已存在该表
    具体该怎么做呢?
      

  3.   

    看看这个有没有用
    http://blog.oracle.com.cn/?uid-3453-action-viewspace-itemid-1296
      

  4.   

    guoxiaoshou2000:
    谢谢,不过和我的情况不同我查看列名,确实是变成了 "id"
    只是我想知道怎么避免
    或能不能在DTS中修改sql避免
      

  5.   

    就我所知,好像没有.最好的办法1楼所说.在ORACLE建一张一样的表.然后开始互导.
    还有ORACLE里是区分大小写的.如果你的SQLSERVER里的数据有小写的话,ORACLE认为是两条记录,而不是同一条记录.
      

  6.   

    在DTS里可以修改,但需要对每个表进行设置.
    在"选择源表和视图"里,每行都有个转换按钮->编辑SQL,把用户名引号去了