oracle为什么导入数据出错?
一、原因如下:
因为 存储过程P_BQ_BD_ACCSUBJ 中使用了DDJT.BD_ACCSUBJ@LINK_YNDD.REGRESS.RDBMS.DEV.US.ORACLE.COM
其中使用了 database link :
LINK_YNDD.REGRESS.RDBMS.DEV.US.ORACLE.COM
二、导入方法如下:
1、excle转成csv之后,打开csv文件看看数据中有没有title。有的话,删掉。让csv中只保留数据。
2、数据导入用sqlldr
先写个ctl脚本
例如:做一个test.ctl里面的内容是
LOAD DATA
INFILE 'D:\DB\XXX.CSV'
append INTO TABLE 表名
FIELDS TERMINATED BY ","
TRAILING NULLCOLS
(HAISASHI_HMS INTEGER EXTERNAL(6),
FILLER CHAR(6)
。。。表中的字段名称和类型 )
PS:这个ctl放在D盘下的DB文件夹下面和你的CSV文件放在一起
运行cmd命令,让当前目录切换到在D:\DB
然后执行下面的命令:sqlldr userid=用户名/密码@sid control=test.ctl
敲下回车就开始导入数据。
加入一个数据就好了。
imp odm/odm@odm file=I:\odm.dmp fromuser=odm touser=odm ignore=y
这样写的话忽略数据库对象存在的报错,不过你的数据可能会有重复。不想重复的话可以按以下步骤操作。
1、导出时使用query选项,将你需要的更新的数据导出(前提是你的数据能有分辨是否是更新项的字段)。 2、在你的电脑中将数据删除(delete或truncate,个人建议truncate),那样导入的都是最新的数据了。
3、drop你电脑中odm的所有对象,用在imp时会自动建立。
这就是所有的步骤了,希望可以帮到你。
参考资料
百度知道.百度知道[引用时间2018-1-21]
是因为 存储过程P_BQ_BD_ACCSUBJ 中使用了
DDJT.BD_ACCSUBJ@LINK_YNDD.REGRESS.RDBMS.DEV.US.ORACLE.COM
其中使用了 database link :
LINK_YNDD.REGRESS.RDBMS.DEV.US.ORACLE.COM
你可以在导入数据库之前, 将 database link 创建好,然后再导入,就可以了。