- 1、本文档共9页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
采用还原CSV文件方法处理巨量数据操作文档讲述
采用还原CSV文件方法处理巨量数据操作文档
说明:
进行数据迁移工作时,会存在将原数据从SQL Server数据库还原至Oracle中间库的工作,此类工作可采用建立中间库对应表、使用SQL Developer工具等方法进行数据还原工作,但是涉及诸如电子档案这种百万、千万级数据量的还原工作,还原时间会很长且容易出错,根据还原襄阳项目中电子档案数据的经验,总结下使用还原CSV文件的方法处理大数据量的具体操作,襄阳电子档案数据量总量为1300万左右,普通的还原时间为15h左右,采用还原CSV文件的方式处理襄阳电子档案数据,还原时间为1.5h左右,大大缩短了还原时间。
注:使用还原CSV文件的方法要注意还原的来源表中列数不要过多、每个字段的数据不要过长,此方法适合数据量大、表列数少、表中字段长度较小的表。
目录
说明: 1
1. 将需要还原的表中数据存为CSV文件 3
2. 在Oracle中间库中建立还原临时表 6
3. 创建CTL文件 7
4. 执行还原脚本 7
5. 在Oracle中间库中处理临时表 7
6. 处理需要还原的表无唯一性标识无法分解的方法 7
1. 将需要还原的表中数据存为CSV文件
1) 创建每一个CSV文件时注意一个CSV文件的数据量要控制在100W以内,这就需要将需要还原的表打碎分解为若干个临时表,具体的分解表方法参照下图:
2) 创建好临时表之后,登录SQL Server数据库,选择还原表所在的数据库新建查询,在查询窗口中将新建立的临时表所有数据查询出来,在结果区域中右键选择将结果另存为选项,将查询数据存为CSV文件,之后打开存好的CSV文件将第一行删除(第一行为列名称信息,需要删除不然在还原时会出现错误),具体操作如图:
2. 在Oracle中间库中建立还原临时表
根据SQL Server数据库中分解表的数量,在Oracle中间库中建立相同数量、结构的还原表,参照如下脚本:
create table zjb_ywdzdacflb1 as
select *
from ywdzdacflb;
3. 创建CTL文件
i. 通过使用TEXT文档创建CTL文件,只需要将文档后缀.TXT改为.CTL即可。
ii. CTL文件语句如下:
load data infile d:\ywdzdalb1.csv --路径为新建立的CSV文件存放的位置。insert into table zjb_ywdzdalb1 --table后为Oracle中对应建立的还原临时表名fields terminated by X09 trailing nullcols(DZDAXH,YWSJYPYJBH,YWDJXH,SJMC,CLHJ) –括号内为Oracle中对应临时表中的具体字段
4. 执行还原脚本
打开CMD窗口,执行如下语句进行还原:
sqlldr userid=xyfcnew/xyfcnew@xyfcnew control=d:\dzdadalb.ctl log=d:\dadzdalb.log
说明:userid后为Oracle中间库临时表所在的用户及实例名称,control后为CTL文件所在的位置。
5. 在Oracle中间库中处理临时表
将还原后的各临时表数据统一插入至目标表,参照如下语句:
insert into ywdzdalbselect *from zjb_ywdzdalb1;commit;
多表进行重复操作。
6. 处理需要还原的表无唯一性标识无法分解的方法
在SQL Server数据库中存在需要还原的表,数据量巨大,需要进行拆分分解为多个表进行单独的还原的情况,但是有些表可能无唯一性的标识,襄阳项目中电子档案存放表中无唯一性标识且数据量为1000W,在分解时采用如下的方法:
a) 首先建立电子档案存放表的临时表,之后在临时表中增加字段作为唯一性标识的字段。参照如下语句:
create table zjb_ywdzdacflb(
dzdaxh varchar(20),
xh int,
wjm varchar(200),
id int
);
说明:表中前三个字段为原表的字段,ID字段为新增的作为唯一性标识的字段。
b) 手动将新增的字段设置为标识字段,右键新建的临时表,选择设计,之后在窗口中点击新增加的字段ID,在下方列属性列表中选择标识规范, 将是标识选择为是,操作如下:
c) 将需要迁移的表数据插入到临时表,不包含新增的字段数据,新增的字段类似于Oracle数据库的ROWNUM,参照语句:
insert into zjb_ywdzdacflb(dzdaxh,xh,wjm)
sel
文档评论(0)