|
本帖最后由 sunny_zhao0127 于 2013-5-30 15:26 编辑
同构平台间的数据迁移
异构平台间的数据迁移
灾难或故障情况下的数据挽回(db2dart)
定界 ASCII格式(del)是DB2用于数据交换的最常用格式
最主要的分隔符:字符分隔符("") 列分隔符(,) 行分隔符(换行符)
asc格式
定长 ASCII (ASC) 格式
这种文件类型包含定长的ASCII 数据 每个数据长度与列定义相同 不足的用空格补齐
行与行之间通过换行符分割
游标 比较适合表间数据迁移 只有LOAD支持游标
EG:
DECLARE mycur CURSOR FOR SELECT COL1,COL2,col3,…… FROM TAB1;
LOAD FROM mycur of CURSOR INSERT INTO NEWtab;
export
export to filename 用来指定将导出的数据放在<filename>文件中,
of filetype 指定导出文件的格式, 如IXF、DEL 或WSF 等。
messages 用来保存导出过程中发生的错误或警告信息.
select-statement 通过 SQL 语句指定导出的数据.
eg :
db2 "export to employee.del of del messages emp.msg select * from employee"
db2 "export to employee.del of del monified by CHARDEL '' message emp.msg select * from employee" -- 选用'' 作为字符串的定界符 而不是 默认的双引号""
导出 emp_resume 表数据,并将大对象数据存放到lobs to 指定的目录下,通过指定
modified by lobsinfile,大对象字段的所有值都保存到一个文件中,代码如下:
db2 "export to emp_resume.del of del lobs to d:\temp\lobs modified by lobsinfile select
* from emp_resume"
导出 emp_resume 表数据,并将大对象数据存放到lobs to 指定的目录下,通过指定
modified by lobsinsepfiles,大对象字段的每个值都存在一个独立的文件中,代码如下:
db2 "export to emp_resume.del of del lobs to d:\temp\lobs modified by lobsinsepfiles
select * from emp_resume"
定界 ASCII格式(del)是DB2用于数据交换的最常用格式
最主要的分隔符:字符分隔符("") 列分隔符(,) 行分隔符(换行符)
asc格式
定长 ASCII (ASC) 格式
这种文件类型包含定长的ASCII 数据 每个数据长度与列定义相同 不足的用空格补齐
行与行之间通过换行符分割
游标 比较适合表间数据迁移 只有LOAD支持游标
EG:
DECLARE mycur CURSOR FOR SELECT COL1,COL2,col3,…… FROM TAB1;
LOAD FROM mycur of CURSOR INSERT INTO NEWtab;
export
export to filename 用来指定将导出的数据放在<filename>文件中,
of filetype 指定导出文件的格式, 如IXF、DEL 或WSF 等。
messages 用来保存导出过程中发生的错误或警告信息.
select-statement 通过 SQL 语句指定导出的数据.
eg :
db2 "export to employee.del of del messages emp.msg select * from employee"
db2 "export to employee.del of del monified by CHARDEL '' message emp.msg select * from employee" -- 选用'' 作为字符串的定界符 而不是 默认的双引号""
导出 emp_resume 表数据,并将大对象数据存放到lobs to 指定的目录下,通过指定
modified by lobsinfile,大对象字段的所有值都保存到一个文件中,代码如下:
db2 "export to emp_resume.del of del lobs to d:\temp\lobs modified by lobsinfile select
* from emp_resume"
导出 emp_resume 表数据,并将大对象数据存放到lobs to 指定的目录下,通过指定
modified by lobsinsepfiles,大对象字段的每个值都存在一个独立的文件中,代码如下:
db2 "export to emp_resume.del of del lobs to d:\temp\lobs modified by lobsinsepfiles
select * from emp_resume"
import
Import 用来将文件里的数据导入到表中,是export 操作的逆向过程。
import from <filename> 指定导入文件的位置和名字,
of <filetype>指定输入文件的类型,如DEL、IXF 或ASC 等.
messages 用来记录导入过程中发生的错误或警告信息。
<Action> INTO table-name 用来指定导入数据的几种方式,目前支持insert,insert_update,
replace,replace_create 和create.
9.7 版本以后replace_create 和create 将不再支持.
insert 用于追加,不改变表中已有数据.
insert_update 用于表中有主键的情况,如果导入数据与表中数据主键匹配,则update,否则insert 追加。
replace 首先删除表数据,然后插入输入文件数据.由于replace 会首先清空数据,所以
建议先做好备份。
commitcount 和restartcount.
commitcount 参数的主要目的是避免事务日志满和锁升级.commitcount <N/automatic>表示
每导入N 行数据后提交一次,而不是等所有数据都导入才提交.automatic 表示DB2 内部会自动
计算什么时候提交,默认情况下,DB2 会自动使用automatic 选项。
restartcount/skipcount N 表示跳过文件前N 行数据,而从第N+1 开始继续导入。该选项一般
用于导入过程中出现了错误,有些数据已经提交入库了,重新导入时就可以忽略这些已经入库
的数据.
在默认情况下,import 会在目标表加X 锁(排他锁),不允许其他应用访问(allow no access)。
如果import 允许其他应用读和写,可指定allow write access 选项,这时import 会在目标表上加
IX 锁,但该选项只能用于insert 或insert_update 操作
db2 "import from employee.del of del messages emp.msg insert into employee"
将 employee.del 文件数据导入到employee 表中,在文件中,字符串用“' '”分隔,而
不是默认的“" "”。allow write access 允许其他应用读或写,commitcount automatic 允
许import 命令自动选择何时提交,代码如下:
db2 "import from employee.del of del modified by CHARDEL'' allow write access
commitcount automatic insert into employee"
将大对象数据导入到表中lobs from 指定大对象数据的位置,代码如下:
db2 "import from emp_resume.del of del lobs from d:\temp\lobs modified by lobsinfile
insert into emp_resume"
|
|