DB2表数据迁移db2命令db2下载db2数据库入门教
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了DB2表数据迁移db2命令db2下载db2数据库入门教,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3428字,纯文字阅读大概需要5分钟。
内容图文
系统用到一个远程数据库。地点在USA,连接速度特别慢。DBA又不给导数据库只好自己写一个数据库表迁移的方法。但是只能一次一张表慢慢的导。使用PHP编写
//原数据库$databaseOri = '原数据库名称';
$hostnameOri = 'IP地址';
$portOri = '端口号';
$userOri = '用户名';
$passwordOri = '密码';
$csOri="DATABASE=$databaseOri;HOSTNAME=$hostnameOri;PORT=$portOri;PROTOCOL=TCPIP;UID=$userOri;PWD=$passwordOri;";
$dbOri = db2_connect ($csOri, $userOri, $passwordOri);
//目标数据库$databaseDes = '要转移到的数据库的名称';
$hostnameDes = 'IP地址';
$portDes = '端口号';
$userDes = '用户名';
$passwordDes = '密码';
$csDes="DATABASE=$databaseDes;HOSTNAME=$hostnameDes;PORT=$portDes;PROTOCOL=TCPIP;UID=$userDes;PWD=$passwordDes;";
$dbDes = db2_connect ($csDes, $userDes, $passwordDes);
//执行sql的方法functionfetcher($db, $query,$par = array()){$stmt = db2_prepare($db, $query);
$res=array();
if($stmt) {
//print_r($stmt);$ex = db2_execute($stmt,$par);
if($ex) {
try{
while($row = db2_fetch_assoc($stmt)) {
array_push($res, $row);
}
}catch(Exception$e){}
}else{
print_r($query);
}
}
return$res;
}
//插入数据库的方法functioninsertIntoDes($db, $query,$par = array()){$stmt = db2_prepare($db, $query);
$res=array();
if($stmt) {
$ex = db2_execute($stmt,$par);
if(!$ex){
print_r($query);
}
}
return$res;
}
functiontransferDB($tableName,$dbOri,$dbDes) {//拼出要转移的table的所有字段名$tableCloums = fetcher(
$dbOri,
"select NAME from sysibm.syscolumns where tbname='".$tableName."'",
array()
);
$tableParams = "";
$insertParamsLength = count($tableCloums);
for($temp=0;$temp<$insertParamsLength;$temp++){
$tmpName = $tableCloums[$temp]["NAME"];
$tableParams = $tableParams.$tmpName;
//print_r($tableCloums[$temp]["NAME"]);if($temp < $insertParamsLength - 1 ){
$tableParams = $tableParams.",";
}
}
//找出table的主键$resultKeyArray = fetcher(
$dbOri,
"select NAME from sysibm.syscolumns where tbname='".$tableName."' and keyseq = '1'",
array()
);
if($resultKeyArray[0]["NAME"]){
$keyCloum = $resultKeyArray[0]["NAME"];
}else{
$keyCloum = "ID";
}
//获取表的所有行数,因为如果表太大有几百万行的话,一下全导入到内存中会照成内存溢出$count = fetcher(
$dbOri,
"select COUNT(*) from public.".$tableName,
array()
);
$dataCount = $count[0][1];
//确定要执行几次$executeloops = floor($dataCount / 10000 + 1);
//$executeloops = 1;//循环执行for($i=0;$i<$executeloops;$i++){
$pageIndex = $i;
$beginIndex = $i*10000;
$endIndex = ($i+1) * 10000;
//通过分页查询,每次从原表中获取1万条数据$getDataFromOriTab =
"select ".$tableParams." from (
select ROW_NUMBER() OVER(ORDER BY ".$keyCloum." DESC) AS ROWNUM, ".$tableParams." from public.".$tableName."
) a where ROWNUM > ".$beginIndex." and ROWNUM <= ".$endIndex ;
//fwrite($myfile, $getDataFromOriTab);$tmpData = fetcher($dbOri,$getDataFromOriTab,array());
//拼接出insert语句中字段的value的值$valueStr = "";
foreach($tmpDataas$index => $row){
$valueStr = "";
foreach ($rowas$cloumName => $value) {
if(empty($value)){
$valueStr = $valueStr . "'',";
}elseif (is_null($value)) {
$valueStr = $valueStr . "null,";
}else{
$valueStr = $valueStr . "$value,";
}
}
$valueStr = substr($valueStr, 0, -1);
$insertSql = "INSERT INTO public.".$tableName." (".$tableParams.") VALUES (".$valueStr.");";
insertIntoDes($dbDes,$insertSql,array());
}
}
}
//参数为要导的表的表名
transferDB("表名",$dbOri,$dbDes);
?>
').addClass('pre-numbering').hide();
$(this).addClass('has-numbering').parent().append($numbering);
for (i = 1; i <= lines; i++) {
$numbering.append($('').text(i));
};
$numbering.fadeIn(1700);
});
});
以上就介绍了DB2表数据迁移,包括了db2,迁移方面的内容,希望对PHP教程有兴趣的朋友有所帮助。
内容总结
以上是互联网集市为您收集整理的DB2表数据迁移db2命令db2下载db2数据库入门教全部内容,希望文章能够帮你解决DB2表数据迁移db2命令db2下载db2数据库入门教所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。