DB2文件导入导出常见命令总结
Db2 的数据迁移,最常用的就是导入导出功能,而导入导出的命令貌似简单,实则内含玄机,千变万化,稍不留神,则错误百出,这儿就工作中常用到的命令,总结了一下,分享给大家!欢迎大家踊跃拍砖!J
当然在这以前,我觉得有必要提及一点关于导入导出基础的知识!
DEL:界定的ASCII文件,行分隔符和列分隔符将数据分开。
ASC:定长的ASCII文件,行按照行分割符分开,列定长。
PC/IXF:只能用来在db2之间导数据,根据类型数字值被打包成十进制或者二进制,字符被保存为ASCII,只保存变量已经使用了的长度,文件中包括表的定义和表的数据。
WSF:工作表方式导入导出,这种格式的文件类型用的比较少。
Db2中对不同的数据导入导出方式,支持不同的文件类型,这里个人觉得很有必要注意的。
文件类型 Import export load
-------------------------------------------------------
定界 支持 支持 支持
非定界 支持 不支持 支持
Ixf 支持 支持 支持
Wsf工作表 支持 支持 不支持
关于3种导入导出操作进行简单的介绍:
export:导出数据,支持IXF,DEL或WSF
import:导入数据,可以向表中导入数据,支持上面提到的4种文件类型。
load:导入数据,功能和import基本相同。支持以上说的几种文件类型。
关于Export
这个其实比较简单,没啥好说的,一般命令:export to filename of filetype select x from xx where ;就ok了,这里需要注意的是:
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 ;
关于Import
1.Import模式的介绍
CREATE/INSERT/INSERT_UPDATE/REPLACE/REPLACE_CREATE
CREATE :首先创建目标表和它的索引,然后将数据导入到新表中。该选项惟一支持的文件格式是 PC/IXF。还可以指定新表所在表空间的名称
INSERT :将导入的数据插入表中。目标表必须已经存在。
INSERT_UPDATE :将数据插入表中,或者更新表中具有匹配主键的行。目标表必须已经存在,并且定义了一个主键。
REPLACE :删除所有已有的数据,并将导入的数据插入到一个已有的目标表中。
REPLACE_CREATE :如果目标表已经存在,则导入实用程序删除已有的数据,并插入新的数据,就像 REPLACE 选项那样。如果目标表还没有定义,那么首先创建这个表以及它的相关索引,然后再导入数据。正如您可能想像的那样,输入文件必须是 PC/IXF 格式的文件,因为那种格式包含对导出表的结构化描述。如果目标表是被一个外键引用的一个父表,那么就不能使用 REPLACE_CREATE。
2. 批量提交
COMMITCOUNT,保证insert的数据在COMMITCOUNT以后进行一次commit,这对于大数据量的导入文件来说是一个不错的方法,
例:Import 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的操作中会讲到!
关于Load
1. 字符串间隔,列间隔,小数点表示
CHARDEL/COLDEL/DECPT
例:LOAD CLIENT FROM 'F:s1.del' OF DEL MODIFIED BY CHARDEL(COLDEL= DECPT? INSERT INTO "DB2ADMIN"."ZXTABLES"
2.数据库记录中存在换行符,导致数据无法装入的情况
MODIFIED BY DELPRIORITYCHAR
Db2默认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.ZXTABLES
3.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 NONRECOVERABLE
LOAD CLIENT FROM 'F:s1.del' OF DEL INSERT INTO DB2ADMIN.ZXTABLES COPY YES
4. load IXF类型文件到多分区数据库
partitioned db configmode load_only_verify_part part_file_location
当数据在2个不同数量节点的数据库之间移动,如果还想使用load来进行IXF的数据装载就比较棘手了,当时查遍IBM的官方文档均无所获,正郁郁不安时,狼出现了,给支了一招,现分享给大家。
最简单的Excel数据导入导出数据库
然后选中这一行按住ctrl,往下拉,sql就全部生成了,然后粘贴到数据库直接执行 更新数据 ="update T_Country set CountryName='"A2"' where CountryCode='"B2"'" 最后把生成的sql在数据库一跑,大功告成!导出数据到excel 其实,excel文件也是一个xml文件,(把excel...
如何通过Excel将联系人导入安卓手机
例如,假设有一个联系人名叫“John Doe”,电话号码是“234567890”,电子邮件地址是“doe@gmail.com”,在A2中输入“John”,在B2中输入“Doe”,在C2中输入“1234567890”,然后在D2中输入“doe@gmail.com”。单击6单击7将文件另存为CSV文件。根据所用的操作系统执行以下操作:Windows——双击页面中...
如何在excel中导入另一个excel文件的数据
A1=型号1,A2=型号2,...B1=1,B2=2,...你在另一张表中的A1=型号x,你想得到它在原表中的数量,你在B1中输入=vlookup(A1,"sheet1!$A$1:$B$100,2,0),就可以得到原表中型号x对应的数量了,再在B1列往下填充公式就能依次得到别的了。公式中参数的意思,你可以看我链接的vlookup函数用法...
如何把CAD中的表格导入到Excel表格中
1、全选这个表格,在表格上右键,在弹出的菜单中选择“输出”命令:2、计算机要你保存一个CSV文件,CSV是文件的扩展名,文件的基本名可以写成“成绩统计”或其它,注意文件类型是“逗号分隔(*.CSV)”:3、保存好的文件是这样的,它是Excel逗号分隔值文件:4、这个分隔值文件可以直接用Excel打开的,打...
怎么样将excel的每行数据导成多个txt的文本文件 ,按行导,不是按列导...
1Next IMsgBox "数据导出完毕!", vbOKOnly, "导出成功"End Sub方法二:1、将excel中文档,ctrl+A全选,ctrl+C复制,然后,ctrl+V粘贴在新建的text1.txt中,2、将附件中的“按行导出.bat”粘贴text1.txt所在目录下。双击按行导出.bat即可。强烈建议用方法二。简单,且适应于多列数据。
合并OUTLOOK2013数据文件夹
很简单,按以下步骤来操作:1,先把A、B2个本地pst文件都导入到outlook中。2,选择A为默认的接收发邮件本地。3,在已打开的B本地pst里,直接把里面的收件箱、已发送邮件,全选直接拖至A pst里的收件箱、已发送邮件箱内。全部拖完后,检查下是否都在A内,然后确定B里没有邮件了,就直接删除B,...
如何将txt批量导入excel(对excel宏了解的一定看过来谢谢了)有工具也行...
步骤1:导出文件列表 点xp系统的开始菜单,点“运行”命令,输入cmd再回车,进入命令窗口,输入 命令 dir D:\\text\\*.txt \/b \/on > c:\\list.txt ,回车。现在在c:盘下会有个list文件,包含要处理de文件的文件名。步骤2:运行下面代码。Option Explicit Public Const sPath As String = "D:\\...
魔兽争霸地图编辑器怎么导出和导入自定义模型
F12打开输入管理器,Ctrl+I导入文件 选一个文件 导入。双击导入的文件 使用自定义路径 改一下完整路径 一般这个路径下载下来有一个文本 里面有的 改上完整路径就能用了 给你几个模型 自己去试试 http:\/\/bbs.feifeishijie.com\/attachment.php?aid=113769&k=8742bacf264a9c6e5fc6b602ba4d0b5e&t=...
数据库30万条记录复制到excel总弹窗。
原因,第一:数据库表对应列和Excel表格的列没有完全对应第二:Excel表格含有特殊格式等,导致导入时无法导入格式产生错误。第三:数据库导入导出功能缺陷(此情况一般不会出现)方法:对于把大量数据存放到数据库中,最好是用图形化数据库管理工具,可是如果没有了工具,只能执行命令的话这会是很费时间的...
苹果电脑里面的照片怎么导出到手机里
连接手机到电脑上,利用iTunes或第三方软件的功能直接导入手机即可。如果使用的其它型号手机,打开电脑的照片文件夹,可以用复制的方式把照片粘贴到手机里也可以。还可以在电脑上下载微信,在电脑上登录微信,通过电脑发微信到自己的微信账号里,然后在手机上收藏或者保存到相册里。
边诞复方: Db2 的数据迁移,最常用的就是导入导出功能,而导入导出的命令貌似简单,实则内含玄机,千变万化,稍不留神,则错误百出,这儿就工作中常用到的命令,总结了一下...
肃州区19263219942: DB2的数据库表导入导出是什么命令呀,为什么导出总是.ixf,导入总是.del结尾的文件啊?哪位大虾指点迷津撒 - ?
边诞复方: 这个格式是由导出语句定义的.导出 db2 export to [文件名].ixf of ixf select * from [表名] 或者 db2 export to [文件名].del of del select * from [表名]导入 有两种方式 import 与load 我只介绍import吧 db2 import from [文件名].ixf of ixf insert into [表名] db2 import from [文件名].del of del insert into [表名]命令里还有很多选项,自己看教程吧
肃州区19263219942: db2 使用命令导出指定表的数据到一个执行insert语句的sql文件中 - ?
边诞复方: DB2可视化界面软件Aqua Data Studio --> tools --> export data ,然后选择你要导出的表,就可以把数据导出到你的指定文件中.(带insert语句的)
肃州区19263219942: 谁有IBMDB2数据库的操作命令大全,请共享一下. - ?
边诞复方: DB2常用命令1.启动数据库 db2start2.停止数据库 db2stop3.连接数据库 db2 connect to o_yd user db2 using pwd4.读数据库管理程序配置 db2 get dbm cfg5.写数据库管理程序配置 db2 update dbm cfg using 参数名 参数值 更多请参考:http://kushu.blog.ccidnet.com/blog/ccid/do_showone/tid_57904.html
肃州区19263219942: DB2数据库导出与导入的问题 - ?
边诞复方: 进入D盘,建立文件架db2backup/db2move/ 进入目录:D:/db2backup 执行:db2look -d databasename -td @ -i username -w password -e -o db2look.ddl 成功之后,进入:D:/db2backup/db2move/ 执行:db2move databasename export -u ...
肃州区19263219942: 如何在Windows CMD里面用命令行操作DB2数据库 - ?
边诞复方: db2 cmd命令操作 1、 打开命令行窗口#db2cmd 2、 打开控制中心# db2cmd db2cc 3、 打开命令编辑器db2cmd db2ce =====操作数据库命令===== 4、 启动数据库实例#db2start 5、 停止数据库实例#db2stop如果你不能停止数据库由于激活的连接,在运行db2stop前执行db2 force application all就可以了 /db2stop force
肃州区19263219942: linux 中怎么操作DB2中的多张表,实现数据的导入和导出,每张表分别对应单个文件? - ?
边诞复方: 导出:db2 "export to tabname.del of del select * from tabname" 导入:db2 "export from tabname.del of del replace into tabname" 对应的文件为当前目录下的tabname.del文件 对于多张表,可以用循环
肃州区19263219942: db2数据库怎么导出指定用户下的表 - ?
边诞复方: --导出数据库表-- db2 "export to employee.ixf of ixf select * from employee"--导入数据库表-- 注: (1)表不存在的情况 db2 "import from employee.ixf of ixf create into employee" (2)表存在的情况 db2 "import from employee.ixf of ixf insert into...
肃州区19263219942: DB2数据迁移哪几种方案可以实现 - ?
边诞复方: DB2中所谓的数据移动,包括:1. 数据的导入(Import)2. 数据的导出(Export)3. 数据的装入(Load)导入和装入都是利用DB2的相关命令把某种格式的文件中的数据保存到数据库中的表中导出是指把DB2数据库的表中的数据保存到某...
肃州区19263219942: DB2如何导出特定格式的数据文件 - ?
边诞复方: export to /opt/mydb/mydata.txt of del modified by nochardel coldel0x09 select table1.a,table2.d from table1 table2 这是导出的语句,其中nochardel表示导出到文本文件时,每个字段不用引号引起来,默认是引号引起来的,coldel表示字段之间的分隔符,其中0x09表示tab键,如果用空格分隔就是0x20,$为0x24其他的你可以自己查.执行过程如下:db2=> connect to yourdb export ......