最近在使用DB2数据库,发现有些工具导入导出不怎么好用,datastudio、Quest Central等。导入导出数据功能都是比较不太好用。经常会报错误:会出现PACE_8K,还有其他error。
当然还是命令行模式更加好用了:网上有一大把的命令很适合大家学习。现在抽出几个常用的命令,当然命令的开头都是db2, 下面的db2name 是要连接的名字
---打开db2cmd
在dos 命令行下输入:db2cmd
--创建database
在dos命令行中输入:db2 create database DB2NAME using codeset GBK territory CN
---连接本地数据库:db2 connect to db2name
---连接远程数据库 :使用catalog 命令,把远程数据库映射到本地连接
1)db2 catalog tcpip node <节点名称> remote <远程数据库地址> server 50000
例如:db2 catalog tcpip node db2name remote 192.168.0.100 server 50000
2) db2 connect to <节点名称> user <用户名> using <密码>
例如:db2 contect to db2name user db2admin using db2admin
---远程数据表的导入到本地:
1 )现在本地磁盘创建一个目录存放 例如:F:\backup\DB2\
2)连接远程数据库 例如:db2 connect to db2name user db2admin using db2admin
3) 导出数据表结构到sql文件
3.1 ) 先打开目录 : cd F:\backup\DB2\
3.2)执行导出表结构到sql文件 ,这样会在目录下生产dbname.sql文件
:db2look -d dbname -e -a -x -i username -w password -o dbname.sql
3.3)导出数据:db2move dbname export -u username -p password
执行完毕后,会在磁盘文件目录生产一大堆的数据文件
提示:可以跳过第二步直接执行第三步,就是导入数据方式有区别 load与 import
--- 导入数据的方式就是:
1.先创建本地database、db2 create db db2name
2.连接本地的database、db2 connect to db2name
3.打开存放备份的文件目录
如果有sql,想先创建表结构:db2 -tvf dbname.sql
再执行导入:db2move dbname load;
如果想一次性创建表结构和数据:就用:db2move dbname import;
--- 注意这个备份目录下有几个文件需要注意:db2move.lst 文件存放了导入数据的schema,就是那个用户名下的数据,如果新建的数据库用户名和远程数据用户名不一样,只需要把这个文件下的用户名替换就ok了
日志文件:EXPORT.out,LOAD.out ,IMPORT.out 三个日志文件。从名字就能知道什么意思了。
----给DB2 表添加一个字段和注释:
ALTER TABLE IE_QUOTA_STANDARD
ADD COLUMN STANDARD_LEVEL VARCHAR(1); (NOT NULL 则表示不为空)
comment on column IE_QUOTA_STANDARD."STANDARD_LEVEL" is '标准等级(1.优秀、2..达标、3.未达标)'
不同服务器数据库之间的数据操作
--创建链接服务器
exec
sp_addlinkedserver
'ITSV '
,
' '
,
'SQLOLEDB '
,
'远程服务器名或ip地址 '
exec
sp_addlinkedsrvlogin
'ITSV '
,
'false '
,
null
,
'用户名 '
,
'密码 '
--查询示例
select
*
from
ITSV.数据库名.dbo.表名
--导入示例
select
*
into
表
from
ITSV.数据库名.dbo.表名
--以后不再使用时删除链接服务器
exec
sp_dropserver
'ITSV '
,
'droplogins '
--连接远程/局域网数据(openrowset/openquery/opendatasource)
--1、openrowset
--查询示例
select
*
from
openrowset(
'SQLOLEDB '
,
'sql服务器名 '
;
'用户名 '
;
'密码 '
,数据库名.dbo.表名)
--生成本地表
select
*
into
表
from
openrowset(
'SQLOLEDB '
,
'sql服务器名 '
;
'用户名 '
;
'密码 '
,数据库名.dbo.表名)
--把本地表导入远程表
insert
openrowset(
'SQLOLEDB '
,
'sql服务器名 '
;
'用户名 '
;
'密码 '
,数据库名.dbo.表名)
select
*
from
本地表
--更新本地表
update
b
set
b.列A=a.列A
from
openrowset(
'SQLOLEDB '
,
'sql服务器名 '
;
'用户名 '
;
'密码 '
,数据库名.dbo.表名)
as
a
inner
join
本地表 b
on
a.column1=b.column1
--openquery用法需要创建一个连接
--首先创建一个连接创建链接服务器
exec
sp_addlinkedserver
'ITSV '
,
' '
,
'SQLOLEDB '
,
'远程服务器名或ip地址 '
--查询
select
*
FROM
openquery(ITSV,
'SELECT * FROM 数据库.dbo.表名 '
)
--把本地表导入远程表
insert
openquery(ITSV,
'SELECT * FROM 数据库.dbo.表名 '
)
select
*
from
本地表
--更新本地表
update
b
set
b.列B=a.列B
FROM
openquery(ITSV,
'SELECT * FROM 数据库.dbo.表名 '
)
as
a
inner
join
本地表 b
on
a.列A=b.列A
--3、opendatasource/openrowset
SELECT
*
FROM
opendatasource(
'SQLOLEDB '
,
'Data Source=ip/ServerName;User ID=登陆名;Password=密码 '
).test.dbo.roy_ta
--把本地表导入远程表
insert
opendatasource(
'SQLOLEDB '
,
'Data Source=ip/ServerName;User ID=登陆名;Password=密码 '
).数据库.dbo.表名
select
*
from
本地表