本篇内容介绍了“DB2导入和导出数据的方法”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一、数据导入导出基础的格式知识DEL:界定的ASCII文件,行分隔符和列分隔符将数据分开。(异机)ASC:定长的ASCII文件,行按照行分割符分开,列定长。PC/IXF:只能用来在db2之间导数据,根据类型数字值被打包成十进制或者二进制,字符被保存为ASCII,只保存变量已经使用了的长度,文件中包括表的定义和表的数据。(本机)WSF:工作表方式导入导出,这种格式的文件类型用的比较少。Db2中对不同的数据导入导出方式,支持不同的文件类型意的。关于3种导入导出操作进行简单的介绍:export:导出数据,支持IXF,DEL或WSFimport:导入数据,可以向表中导入数据,支持上面提到的4种文件类型。 load:导入数据,功能和import基本相同。支持以上说的几种文件类型。关于Export命令格式:export to filename of filetype select x from xx where ;几个需要注意的问题:1.关于不同字符集的导出MODIFIED BY CODEPAGE=Exprot to filename.del for del MODIFIED BY CODEPAGE=1386 select … from …where …;这里,在数据从数据库倒出来的时候就会做一个数据库代码页的转换2.时间字段格式化的MODIFIED BY TIMESTAMPFORMAT=”yyyy-mm-dd hh:mm:ss tt”例:Exprot to filename.del for del MODIFIED BY TIMESTAMPFORMAT=”yyyy-mm-dd hh:mm:ss tt” select … from …where …;关于Import1.Import模式的介绍CREATE/INSERT/INSERT_UPDATE/REPLACE/REPLACE_CREATECREATE :首先创建目标表和它的索引,然后将数据导入到新表中。该选项惟一支持的文件格式是 PC/IXF。还可以指定新表所在表空间的名称INSERT :将导入的数据插入表中。目标表必须已经存在。INSERT_UPDATE :将数据插入表中,或者更新表中具有匹配主键的行。目标表必须已经存在,并且定义了一个主键。REPLACE :删除所有已有的数据,并将导入的数据插入到一个已有的目标表中。REPLACE_CREATE :如果目标表已经存在,则导入实用程序删除已有的数据,并插入新的数据,就像 REPLACE 选项那样。如果目标表还没有定义,那么首先创建这个表以及它的相关索引,然后再导入数据。正如您可能想像的那样,输入文件必须是 PC/IXF 格式的文件,因为那种格式包含对导出表的结构化描述。如果目标表是被一个外键引用的一个父表,那么就不能使用 REPLACE_CREATE。2.批量提交COMMITCOUNT,保证insert的数据在COMMITCOUNT以后进行一次commit,这对于大数据量的导入文件来说是一个不错的方法,例:Imp开发云主机域名ort from filename of del COMMITCOUNT 50000 insert into tabname;3.批量插入MODIFIED BY COMPOUND把文件中的 COMPOUND 行记录作为一组一起导入,这个操作可以和上边的批量提交一起使用,比较理想。例:Import from filename of del MODIFIED BY COMPOUND =50 insert into tabname;4.导入记录限制ROWCOUNT:只导入rowcount 条数据,有时候,业务逻辑需要只导入部分数据,那么ROWCOUNT是一个不错的选择,只是在我的测试中ROWCOUNT一直没有起过作用,呵呵,谁熟悉这里,帮我完善下。例:Import from filename of del ROWCOUNT 10000 insert into tabname;5.导入起点RESTARTCOUNT:从导入文件的第RESTARTCOUNT条记录开始导入例:Import from filename of del RESTARTCOUNT 55 ROWCOUNT 10000 insert into tabname;–从55条开始,导入10000条数据6.有警告数据的条数限制WARNINGCOUNT:当导入的数据中,有警告或错误(例如类型不匹配,列不对应等造成的)并且条数超过WARNINGCOUNT是就会停止import。例:Import from filename of del WARNINGCOUNT 10 insert into tabname;7.禁止发出行警告MODIFIED BY NOROWWARNINGS例:Import from filename of del MODIFIED BY NOROWWARNINGS WARNINGCOUNT 10 insert into tabname;8.LOB 文件LOBS FROM :指出LOB的路径例:Import from filename of del LOBS FROM ‘/home’ MODIFIED BY NOROWWARNINGS WARNINGCOUNT 10 insert into tabname;9.对于自增序列(GENERATED ALWAYS)建议不要对自增序列的表进行import操作,因为import对于自增序列,只有MODIFIED BY IDENTITYIGNORE和MODIFIED BY IDENTITYMISSING的2中操作,这2中操作都会改变自增序列的原值,这样如果导出表和表之间有基于自增序列的关联关系的话,就失去了数据本身的意义,所以建议尽量少用基于import的自增表的操作,那该怎么做?可以用load老代替import,我们下来在load的操作中会讲到!关于Load1. 字符串间隔,列间隔,小数点表示CHARDEL/COLDEL/DECPT例:LOAD CLIENT FROM ‘F:s1.del’ OF DEL MODIFIED BY CHARDEL(COLDEL= DECPT? INSERT INTO “DB2ADMIN”.”ZXTABLES”2.数据库记录中存在换行符,导致数据无法装入的情况MODIFIED BY DELPRIORITYCHARDb2默认load优先级策略为,record delimiter, character delimiter, column delimiter,这样record delimiter得优先级最高,所以原始文件如果有换行的话load就认为是新的record,如果用户在某些情况下行里面包含了换行符(比如论坛里面的一条帖子,不可能把换行符删掉的),就必须用delprioritychar改变默认的优先级别,确保””之间的数据不管有没有换行符都被认为是同一条记录例:LOAD CLIENT FROM ‘F:s1.del’ OF DEL MODIFIED BY DELPRIORITYCHAR INSERT INTO DB2ADMIN.ZXTABLES3.load后表空间暂挂的处理Copy YES/ NONRECOVERABLE对于DMS表空间,load默认为copy NO 模式,此模式下,load完成后,表空间会处于暂挂状态,这时候只能查表中的数据,需要对表空间进行一次备份,才可以对表进行update、insert等操作,那么我们可以使用如上2个命令,对于Copy YES,load完成以后会自动进行一次备份操作;NONRECOVERABLE 指出load不可恢复,此命令符不会产生表空间暂挂,也不会自动进行表空间备份,但是他有一个缺点就是,不能恢复,当数据库进行回滚的时候,不能还原,危险等级还是比较高一点,不过个人觉得也NONRECOVERABLE比较实用。例:LOAD CLIENT FROM ‘F:s1.del’ OF DEL INSERT INTO DB2ADMIN.ZXTABLES NONRECOVERABLELOAD CLIENT FROM ‘F:s1.del’ OF DEL INSERT INTO DB2ADMIN.ZXTABLES COPY YES4. load IXF类型文件到多分区数据库partitioned db configmode load_only_verify_part part_file_location当数据在2个不同数量节点的数据库之间移动,如果还想使用load来进行IXF的数据装载就比较棘手了,当时查遍IBM的官方文档均无所获,正郁郁不安时,狼出现了,给支了一招,现分享给大家。首先,把ixf文件复制和分区数量相同的文件,并后缀.000(分区号),比如,2个分区,那么我需要把原来的a.ixf,拷贝2个,并命名为a.ixf.000以及a.ixf.001然后,load from staff.ixf of ixf replace into t1 partitioned db configmode load_only_verify_part part_file_location xxxx(part_file_location为a.ixf.000所在的目录),当然如果在unix下的话,可以通过ln –s 来做一个连接也行。5. 对于自增序列(GENERATED ALWAYS)MODIFIED BY IDENTITYOVERRIDE:此参数可以理解为,采用文件load文件中的自增值做为表自增序列的值,这样就能保证对于自增序列有业务意义,或者关联逻辑(主外键关联)的情况下保证数据的一致。例: LOAD CLIENT FROM ‘F:s1.del’ OF DEL MODIFIED BY IDENTITYOVERRIDE INSERT INTO DB2ADMIN.ztables;6. 对于自增序列(GENERATED by default)GENERATED by default可以直接通过一般的导入方式加载数据,不过有时候会有一点点小问题,自增序列没有进行分配,也就是说,原来表有50条记录,自增序列的下一次分配值为50,当你已经导入了1000条记录进去了,然后发现自增序列的下一次分配值还是为50,这种事不经常发生,但是偶尔会发生一次,比较郁闷的是,当表继续插入数据的时候,下一次分配就会发生冲突,尤其是如果自增建为主键的时候,会违反唯一约束。解决办法:首先找到这个序列分配的最大值,select max(id) from tablea;然后用下边这个命令,alter table tablea alter column restart with max(id)+17.ROWCOUNT/WARNINGCOUNT 这个同IMPORT8.terminate,restart如果load的过程中出了点故障,比如连接被force掉了等,这时连接查询表数据会报错SQL0668N,原因码3,这时可以通过带有terminate的load命令来进行处理!LOAD CLIENT FROM ‘F:s1.del’ OF DEL terminate INTO DB2ADMIN.ztables;9. set integrity 命令如果表上有约束,那么给表load数据以后,一般连接表的时候都会报错,SQL0668N,原因码1,这说明该表处于“设置完整性暂挂无访问”状态,那么需要如下命令来操作。Set integrity for schema.tablename immediate checked;10.提高导入导出速度的数据库参数CONFIGURATION:应用程序堆大小,该参数指示可由Backup,restore,load及装入恢复应用程序同事使用的最大内存量,这个值可以设置为10000*cpu数量。DB2 ‘UPDATE DATABASE CONFIGURATION USING UTIL_HEAP_SZ 113486’“DB2导入和导出数据的方法”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注开发云网站,小编将为大家输出更多高质量的实用文章!
今天就跟大家聊聊有关虚拟主机只能用来建站吗,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。虚拟主机除了建站外,还可以用于搭建数据共享平台,数据库存储平台,软件应用平台等。这其中,以建站为最主要用途,使用最…
免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。