① IBM DB2 的数据复制、迁移方法[1]
以下方法经测试 在环境IBM x G× G RAID DB V Win Adv Server DMS表空间中 数据的load速度在 万条/min左右
背景 需要更改数据库表空间 或者需要将数据库中所有表的数据迁移到一个新的数据库中
步骤
通过db 控制台(db cc)选中源数据库中的所有表 将其导出成DDL脚本;
根据需要对脚本进行必要的修改 譬如更改表空间为GATHER;
新建数据库 新建DMS表空间:GATHER;
将DDL脚本在此数据库中执行;
编写代码查询源数据库中的所有表 自动生成export脚本;
编写代码查询源数据库中的所有表 自动生成import脚本;
连接源数据库执行export脚本;
连接目标数据库执行import脚本;
附录 :生成export脚本代码示例:/*** 创建导出脚本
* @param conn
* @param creator表创建者
* @param filePath
*/
public void createExportFile(Connection conn String creator String filePath) throws Exception {
DBBase dbBase = new DBBase(conn);
String selectTablesql = select name from sysibm systables where creator = + creator + and type= T ;
try {
dbBase executeQuery(selectTableSql);
} catch (Exception ex) {
throw ex;
} finally {
dbBase close();
}
DBResult result = dbBase getSelectDBResult();
List list = new ArrayList();
while (result next()) {
String table = result getString( );
list add(table);
}
StringBuffer *** = new StringBuffer();
String enterFlag = ;
for (int i = ; i < list size();i++) {
String tableName = (String)list get(i);
*** append( db export to aa + String valueOf(i+ )+ ixf of ixf select * from + tableName + );
lishixin/Article/program/DB2/201311/21944
② 如何将DB2数据导入到SQLSERVER中
int inthestr(char *s,char ch)
{
while(*s!='\0'){
if(*s==ch)
return 1;
s++;
}
return 0;
}
③ DB2的复制迁移
以下方法经测试,在环境IBM x346,3.2G×2,4G,RAID 1,DB2 V8.2.4,Win2000 Adv Server,DMS表空间中,数据的load速度在60-100万条/min左右。
背景:需要更改数据库表空间,或者需要将数据库中所有表的数据迁移到一个新的数据库中。
步骤:
1.通过db2控制台(db2cc)选中源数据库中的所有表,将其导出成DDL脚本;
2.根据需要对脚本进行必要的修改,譬如更改表空间为GATHER;
3.新建数据库,新建DMS表空间:GATHER;
4.将DDL脚本在此数据库中执行;
5.编写代码查询源数据库中的所有表,自动生成export脚本;
6.编写代码查询源数据库中的所有表,自动生成import脚本;
7.连接源数据库执行export脚本;
8.连接目标数据库执行import脚本;
附录1:生成export脚本代码示例:/**
* 创建导出脚本* @param conn
* @param creator表创建者
* @param filePath
*/
public void createExportFile(Connection conn,String creator,String filePath) throws Exception {
DBBase dbBase = new DBBase(conn);
String selectTableSql 2= select name from sysibm.systables where creator = ' + creator + ' and type='T';
try {
dbBase.executeQuery(selectTableSql2);
} catch (Exception ex) {
throw ex;
} finally {
dbBase.close();
}
DBResult result = dbBase.getSelectDBResult();
List list = new ArrayList();
while (result.next()) {
String table = result.getString(1);
list.add(table);
}
StringBuffer sb = new StringBuffer();
String enterFlag = ;
for (int i = 0; i < list.size();i++) {
String tableName = (String)list.get(i);
sb.append(db2 export to aa + String.valueOf(i+1)+ .ixf of ixf select * from + tableName + );
sb.append(enterFlag);
}
String str = sb.toString();
FileUtility.saveStringToFile(filePath, str, false);
}附录2:生成import脚本代码示例:/**
* 创建装载脚本
* @param conn
* @param creator表创建者
* @param filePath
*/
public void createLoadFile(Connection conn,String creator,String filePath) throws Exception {
DBBase dbBase = new DBBase(conn);
String selectTableSql = select name from sysibm.systables where creator = ' + creator + ' and type='T';
try {
dbBase.executeQuery(selectTableSql);
} catch (Exception ex) {
throw ex;
} finally {
dbBase.close();
}
DBResult result = dbBase.getSelectDBResult();
List list = new ArrayList();
while (result.next()) {
String table = result.getString(1);
list.add(table);
}
StringBuffer sb = new StringBuffer();
String enterFlag = ;
for (int i = 0; i < list.size();i++) {
String tableName = (String)list.get(i);
sb.append(db2 load from aa + String.valueOf(i+1)+ .ixf of ixf into + tableName + COPY NO without prompting );
sb.append(enterFlag);
}
String str = sb.toString();
FileUtility.saveStringToFile(filePath, str, false);
}附录3:export脚本示例db2 connect to testdb user test password test
db2 export to aa1.ixf of ixf select * from table1
db2 export to aa2.ixf of ixf select * from table2
db2 connect reset附录4:import脚本示例db2 connect to testdb user test password test
db2 load from aa1.ixf of ixf replace into table1 COPY NO without prompting
db2 load from aa2.ixf of ixf replace into table2 COPY NO without prompting
db2 connect reset
④ SQL Server 2000 ,如何将一个数据库中的表结构复制到另外一个数据库中
操作方案:将db2复制成db1,将原db1中的数据导入即可。
1、分离db1、db2。
2、将db2数据库文件复制一份存成另外的名。
3、将db2存成另外名的文件附加为数据库db1,并将所有用户表数据清空。
4、将db1的文件附加成数据库db3,将db3中的数据导入db1。
⑤ 如何把DB2的数据直接导入SQL server中
1、在SQL Server中,在对应的数据库中点击右键然后选择“任务”菜单下的“生成脚本”,连续点击两个“下一步”
2、在弹出的对话框中,在“选项”下面的框中找到“为服务器版本编写脚本”
3、把SQL Server修改成SQL Server 2000,然后再点击下一步,把表选中,如有存储过程,也需要把存储过程选中,然后点击下一步
4、全选存储过程或者表,然后点击“下一步”,再点击“完成”
5、在新建的查询窗口中生成了所有的SQL语句,把这些语句进行复制,然后在SQL Server 2000中对应数据库的查询分析器中进行执行,就把对应的表结构及存储过程生成了。
6、再用SQL Server 2000中在对应数据库中点击右键,在“所有任务”对应的“导入数据”,输入SQL Server 2005中服务器的名称或者IP地址
7、输入SQL Server 2000中服务器对应的名称或者IP地址,然后默认的选择进入“下一步”,全选所有的表,然后点击两个“下一步“,数据就可以导进来了。
⑥ sql中如何把一个数据库里面的数据复制到第二个里面去
要复制某个表:
insert
into
目标表名
select
*
from
[ip地址].[数据库名].dbo.源表名
要复制整个数据库最简单的就是从
企业管理器
中备份一个源数据库
再还原到目标数据库
也可以用“导出数据功能”
⑦ 数据库B无表,如何复制sql数据库A表到数据库B
是不是oracle数据库?如果是的你可以用命令。
用法:
from
数据库1的用户名/数据库1的密码@数据库1的名称
insert
into
a(a1,a2,a3,a4)
using
select
b1,b2,b3,b4
from
b;
代码在数据库2执行。
如你有数据库db1,db2(假设用户名和密码为scott,tiger),要从db2把数据复制到db1.
from
scott/tiger@db2
insert
into
a(a1,a2,a3,a4)
using
select
b1,b2,b3,b4
from
b;
⑧ mysql如何复制数据到同一张表
在利用数据库开发时,常常会将一些表之间的数据互相导入。当然可以编写程序实现,但是,程序常常需要开发环境,不方便。最方便是利用sql语言直接导入。既方便而修改也简单。以下就是导入的方法。
1、 表结构相同的表,且在同一数据库(如,table1,table2)
Sql :
复制代码代码如下:
insert into table1 select * from table2 (完全复制)
insert into table1 select distinct * from table2(不复制重复纪录)
insert into table1 select top 5 * from table2 (前五条纪录)
2、不在同一数据库中(如,db1 table1,db2 table2)
sql:
[code]
insert into db1.table1 select * from db2.table2 (完全复制)
insert into db1.table1 select distinct * from db2table2(不复制重复纪录)
insert into tdb1.able1 select top 5 * from db2table2 (前五条纪录)
3、表结构不同的表或复制部分纪录(如,dn_user,dn_user2)
a. 建一个新表[DN_UserTemp](在老表dn_user上增加一列)
复制代码代码如下:
CREATE TABLE [DN_UserTemp] ( [Num] [numeric](18, 0) IDENTITY (1, 1) NOT NULL)
[Id] [idtype] NOT NULL ,
[Name] [fntype] NOT NULL ,
[Descript] [dstype] NULL ,
[LogonNm] [idtype] NOT NULL ,
[Password] [idtype] NULL ,
[Gender] [char] (1) NULL ,
[Quited] [booltype] NOT NULL,
[OffDuty] [booltype] NOT NULL ,
[Stopped] [booltype] NOT NULL,
[OSBind] [booltype] NOT NULL,
[Domain] [idtype] NULL ,
[EMail] [fntype] NULL ,
[UnitId] [idtype] NULL ,
[BranchId] [idtype] NULL ,
[DutyId] [idtype] NULL ,
[LevelId] [idtype] NULL ,
[ClassId] [idtype] NULL ,
[TypeId] [idtype] NULL ,
[IP] [varchar] (15) COLLATE Chinese_PRC_CI_AS NULL ,
[ExpireDT] [datetime] NULL ,
[Sort] [int] NOT NULL ,
[AllowDel] [booltype] NOT NULL,
[UnitChief] [booltype] NOT NULL,
[BranchChief] [booltype] NOT NULL ,
[UnitDeputy] [booltype] NOT NULL ,
[BranchDeputy] [booltype] NOT NULL ,
[Num] [numeric](18, 0) IDENTITY (1, 1) NOT NULL
) ON [PRIMARY]
b. 将dn_uer2的数据拷入dn_usertemp
sql:insert into dn_usertemp select * from dn_user2
c.将dn_usertemp 拷入dn_user
sql:
复制代码代码如下:
declare @i int
declare @j int
declare @Name fntype
set @i=1
select @j=count(*) from dn_usertemp
while @i<@j 1
begin
select @Name=Name from dn_usertemp where Num=@i
print @Name
insert into dn_user (Name) values (@Name) where Num=@i
select @i=@i 1
end
MySql数据库复制表数据
将 proction 数据库中的 mytbl 表快速复制为 mytbl_new,2个命令如下:
复制代码代码如下:
CREATE TABLE mytbl_new LIKE proction.mytbl;
INSERT mytbl_new SELECT * FROM proction.mytbl;
第一个命令是创建新的数据表 mytbl_new ,并复制 mytbl 的数据表结构。
第二个命令是讲数据表 mytbl 中的数据复制到新表 mytbl_new 。
注:proction.mytbl是指定要复制表的数据库名称为 proction 。它是可选的。
假如没有proction. ,MySQL数据库将会假设mytbl在当前操作的数据库。
另外:在mysql数据库中复制数据为:
复制代码代码如下:
select * into desTable from sourceTable在mssql中支持,在mysql中不支持
insert into desTable select * from sourceTable
⑨ DB2数据库,将表A中的数据复制到表B中,如何写SQL
1、字段要匹配(数量、类型);
INSERTINTOB(ID--逐一列出,避免对应不上
,...
)
SELECTID--需要新ID的话,换成自己的函数或者计算公式
,...
FROMA
2、若ID字段是自增长的,要将自增长属性关闭