还剩8页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
oracle数据库导入小结oracle数据库导入小结最近进行了大量的数据表导入工作,趁此对此做一下总结,也希望给没做过的朋友作个参考,这里主要借用excel作为导入工具使用,这里以人员表为例,进行说明
1、被导入的表的结构CURRENTTYPENAMEIDCARDCURRENTPOSITIONUSERIDNATIVEPLACEPEOPLE
2、导入的表的结构VARCHAR230VARCHAR2100VARCHAR218VARCHAR2100VARCHAR250VARCHAR2100VARCHAR220当前类型,1在职人员、2录用、3聘用、4调入、5过渡姓名身份证号码现任职务登录ID籍贯民族,汉、蒙、回、苗、黎、其它USER_IDLOGIN_NAMEPASS_WORDIS_ACTIVENOUSER_NAMEOLD_NAMESEXBIRTH_DAYPROVINCECITYPOLITICAL_LAND_SPACENATIONNUMBERVARCHAR250VARCHAR2100VARCHAR21NUMBERVARCHAR250VARCHAR250VARCHAR22DATEf ile==/f ilepath/xxxx.dmplog—/f ilepath/import log.1og学会使用oracle相关命令方法会给我们的工作带来便利,遇到问题可以迅速的解决,而不用再baidu出来的海量信息中区找解决方法希望本文能够对大家有所帮助VARCHAR220VARCHAR220VARCHAR220VARCHAR220主键登录名密码账号状态排序姓名曾用名性别生日籍贯省籍贯市政治面貌民族
3、弄清楚两个表之间字段的对应关系文件导出表字段IDuserid单位内顺序号姓名性别出生年月日政治面貌导入表字段USER_IDLOGIN_NAMEPASS_WORDIS_ACTIVENOUSER_NAMEOLD_NAMESEXBIRTH_DAYPR0VINCECITYPOLITICAL_LAND_SPACE字段备注主键登录名密码账号状态排序姓名曾用名性别生日籍贯省籍贯市政治面貌民族NATION民族
3、写出被导入表要导入的字段的select语句,在plsql中把查询结果导成excel文件
4、在生成的excel文件中手动加入一列,如ID序列作为主键
5、打开对应关系文件,使用plsql的导入功能导入excel中的数据〃[{〃c〃{〃ix〃O,〃iy〃O,〃iw〃805,〃ih〃521},〃p〃{〃h〃:521,“opacity:1,rotate〃:0,〃w〃:
622.05,〃x〃135,〃x0〃135,〃xl〃135,〃x2〃
757.05,〃x3〃
757.05,〃y〃
117.149,〃y0〃
519.824,〃yl〃
117.149,〃y2〃H
7.149,〃y3〃
519.824,〃z〃0},〃ps〃n ull,〃s〃{z/pic_file/z:zz/home/iknow/conv//data//bdef//43213016//
4321301630.png〃},〃t〃〃pic〃},{〃c〃{〃ix〃0,〃iy〃526,〃iw〃:804,〃ih〃:556},〃p〃{〃h〃:556,“opacity〃1,“rotate”:0,〃w〃
622.275,〃x〃135,〃x0〃:135,W:135,〃x2〃
757.275,〃x3〃:
757.275,〃y〃
536.25,〃y0〃:
966.599,〃yl〃
536.25,〃y2〃
536.25,〃y3〃:
966.599,〃z〃1},〃ps〃:miH,〃s〃{〃pic_file〃:〃/h me/iknow/conv//data//bdef//43213016//43213016_3_l.png〃},〃t〃〃pic〃}],〃page〃:{〃ph〃
1262.879,〃pw〃:
892.979,〃iw〃:805,〃ih〃1082,〃v〃6,〃t〃〃1〃,pptlike〃false,〃cx〃135,〃cy〃:
117.149,〃cw〃
622.275,〃ch〃
849.45}}〃[{〃c〃{〃ix〃0,〃iy〃:0,〃iw〃:816,〃ih〃:540},〃p〃:{〃h〃:540,“opacity:1,rotate〃0,〃w〃:
622.425,〃x〃135,〃x0〃135,〃xl〃135,〃x2〃
757.425,〃x3〃757,425,〃y〃
112.649,〃y0〃
524.55,〃yl〃H
2.649,〃y2〃
112.649,〃y3〃:
524.55,〃z〃:0},〃ps〃:null,〃s〃{〃pic_file〃:〃/home/iknow/conv//data//bdef//43213016//
4321301640.png〃},〃t〃〃pic〃},{〃c〃{〃ix〃:0,〃iy〃545,〃iw〃:808,〃ih〃518},〃p〃{〃h〃:518,“opacity〃1,“rotate”:0,〃w〃:622,65,〃x〃:135,〃x0〃135,〃xl〃135,〃x2〃
757.65,〃x3〃
757.65,〃y〃
540.149,〃y0〃:
939.449,〃yl〃
540.149,〃y2〃
540.149,〃y3〃:
939.449,〃z〃:1},〃ps〃null,〃s〃:{〃pic_file〃〃/home/iknow/conv//data//b def〃43213016〃43213016_4_Lpng〃},〃t〃〃pic〃}],〃page〃:{〃ph〃
1262.879,〃pw〃
892.979,〃iw〃816,〃ih〃1063,〃v〃6,〃t〃〃1〃,pptlike〃false,〃cx〃135,〃cy〃
112.649,〃cw〃
622.65,〃ch〃
826.799}}〃[{〃c〃{〃ix〃0,〃iy〃0,〃iw〃830,〃ih〃541},〃p〃{〃h〃:541,“opacity:1,rotate”:0,〃w〃:
622.8,〃x〃:135,〃x0〃135,〃xl〃135,〃x2〃
757.8,〃x3〃
757.8,〃y〃
115.574,,zy0〃
521.474,〃yl〃
115.574,〃y2〃
115.574,〃y3〃52L474,〃z〃0},〃ps〃:null,〃s〃{z/pic_filez/:z,/home/iknow/conv//data//bde f〃43213016〃43213016_5_
0.png〃},〃t〃〃pic〃},{〃c〃{〃ix〃0,〃iy〃:546,〃iw〃:817,〃ih〃:529},〃p〃{〃h〃:529,“opacity〃:1,〃rotate:0,w〃:
622.275,〃x〃135,〃x0〃:135,〃xl〃135,〃x2〃:
757.275,〃x3〃
757.275,〃y〃
538.349,〃yO〃94L249,〃yl〃
538.349,〃y2〃
538.349,〃y3〃
941.249,〃z〃1},〃ps〃null,〃s〃{〃pic_file:z//home/iknow/conv//data//bdef//43213016//43213016_5_
1.png},〃t〃〃pic〃}],page〃{〃ph〃
1262.879,〃pw〃
892.979,〃iw〃830,〃ih〃1075,〃v〃6,〃t〃〃1〃,pptlike〃false,〃cx〃135,〃cy〃:
115.574,〃cw〃:
622.8,〃ch〃
825.675}}可以编写转换函数处理
6、不能用excel导入或者需要转换的列只能通过程序修改了,可以使用纯jdbc或者hibernatehql语句或者本地sql进行转换一般的字段数据转换先把数据从源表中读取出来,然后通过程序转换成需要的数据,保存到目标表中对大字段数据的处理oracle中的clob对应java.lang.String,blob对应byte[]Oracle读取大字段的时候,是比较慢的,会爆内存溢出错误我的解决办法是设大myeclipse的内存xml800M表中如果有较多的数据,用hibernatehql操作起来是很慢的,每次只能提交100条数据左右手动每次导入若干条,这样会比较费时间最好使用jdbc操作会快些用java导入数据的时候不能一次读取所有的记录,否则会抛堆栈溢出的异常,可以根据id每次选择一定量的数据进行导入执行环境可以在SQLPLUS.EXE或者DOS命令行中执行,DOS中可以执行时由于在oracle中,安装目录\\ora9i\\BIN被设置为全局路径,该目录下有EXP.EXE与IMP.EXE文件被用来执行导入导出oracle用java编写,SQLPLUS.EXE.EXP.EXE、IMP.EXE这两个文件是被包装后的类文件SQLPLUS.EXE调用EXP.EXE、IMP.EXE所包裹的类,完成导入导出功能下面介绍的是导入导出的实例数据导出1将数据库zxcc完全导出用户名kf密码zx导出到D:\\zxcc.dmp中expkf/zx@zxccfile=d:\\zxcc.dmpfull=yfull二y表示全库导出full总共有2个可选项yes y/non,缺省情况下full=no,这时只会将该用户下的对象导出2将数据库zxcc中kf用户与cc用户的表导出expkf/zx@zxccfile=d:\\zxcc_ur.dmpowner=kf,ccfull方式可以备份所有用户的数据库对象,包括表空间、用户信息等,owner=XX只能备份指定用户的对象,其他用户下的就不备份了,EXP中full=y和owner二XX是不能同时使用的3将数据库zxcc中的表kf_operator kf_role导出expkf/zx@zxccfile=d:\\zxcc_tb.dmptables=kf operator,kfroletables=xx表示备份相关表,不能同时和owner full使用4将数据库中的表kf_operator中的字段oper_id以〃00〃打头的数据导出expkf/zx@zxccfile=d:\\zxcc_t.dmptables=kf operatorquery=\\〃whereoper_idlike〃00%〃\\〃query主要是导出合适条件的数据使用该参数时,需要注意对所有操作系统保留字符都要使用转义符号若有括号也需要转义query=\\z,wheredt=to_date\\\〃201*-09-22\〃,\〃yyyy-mm-dd\〃\\\\〃如果遇到条件比较繁琐的语句,频繁的转义操作不仅费时,还很容易出错我们可以使用exp或expdp的PARFILE参数避免queiy内容的繁琐转义问题例oracleDBALNP01catzxcc.partables=kf_operatorfile=zxcc.dmpquery二〃wheredt time二to date(〃201*-06-25〃,〃yyyy-nim-dd〃)〃这时就可以尽情的再双引号中写条件语句了上面是常用的导出,对于压缩,可用winzip把dmp文件可以很好的压缩也可以在上面命令后面加上compress=y来实现数据的导入1将D:\\zxcc.dmp中的数据导入zxcc数据库中impkf/zx@zxccfile=d:\\zxcc.dmp导数据得时候,有可能报错为什么?有以下主要的原因:A.导入的对象(表,视图,方法等)原本不属于当前连接的用户的B.导入的对象在该数据库的指定用户下已经存在C.导入的对象的原本用户不再这个数据库里对于这三个问题的处理方法如下a/c、所有对象全部导入到指定的账户下impkf_new/zx@zxcc_newf ile=d:\\zxcc.dmpfromuser=kftouser=kf_new其中fromuseLkf为.dmp文件里的对象的原先的owner,touser=kf_new为作为导入的对象的新的Owner.b、忽略/插入数据Impsystem/123456@ATSTestDBf ile=c:\\export.dmpignore二y其中ignore二y告诉imp.exe把数据直接插入到相应对象(并且如果导入的对象里面有其他的对象,如约束,索引等,会在数据插入后被创建)2将d:\\zxcc_tb.dmp中的表tb operator导入impkf/zx@zxccfile=d:\\zxcc_tb.dmptables=tb operator)忽略加载约束有时候导数据进来的时候,我们不需要把它的约束,比如一些外键约束等都导进来,可以加上参数constraints二N不加载索引(比如唯一性的索引),可以加上参数indexs二N只加载结构,不加载数据,如果只要表的结构等定义(约束,触发器),那么不要里面的数据,可以加上参数rows二N对于上述操作登陆操作的对象system是管理员,如果不是管理员,而是普通用户,那么这个用户必须有创建删除对象的权利,对象可能包括表,视图,方法,存储过程等等常见的对象为什么“可能”包括?因为这个视导入导出的时候是否涉及相关类型的对象而定Impkf/zx@zxcc_newfile二d:\\zxcc.dmpfromuser=kftouser=kfnewignore=y基本上上面的导入导出够用了不少情况要先是将表彻底删除,然后导入注意操作者要有足够的权限,权限不够它会提示数据库链接正常,可以用tnspingzxcc来获得数据库zxcc能否连上导入/导出数据库时注意字符集可能会出现导出/导入时数据库字符集不一致而报错oracle数据库其他常用命令
1、给用户增加导入数据权限的操作第一,启动sql*puls第二,以管理员(DBA)用户登陆第三,createuser用户名IDENTIFIEDBY密码(如果已经创建过用户,这步可以省略)第四,GRANTCREATEUSER,DROPUSER,ALTERUSER,CREATEANYVIEW,DROPAN YVIEW,EXP_FULL_DATABASE,IMP_FULL_DATABASE,DBA,CONNEC T,RESOURCE,CREATESESSIONTO用户名字第五,运行-cmd-进入dmp文件所在的目录,impuserid二管理员用户名/密码full=yfile=*.dmp或者impuserid=管理员用户名/密码full=yfile=filename.dmp
2、Oracle不允许直接改变表的拥有者,利用Export/Import可以达到这一目的.先建立.par文件,然后,使用时命令如下impparfile=/filepath/import
9.par^!]import
9.par内容如下:FROMUSER=userTOUSER-user_new(注把表的拥有者由FROMUSER改为TOUSER,FROMUSER和TOUSER的用户可以不同)ROWS=YINDEXES=YGRANTS=YC0NSTRAINTS=YBUFFER=409600。
个人认证
优秀文档
获得点赞 0