DB2 数据库操作笔记

    最近在使用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 
set  b.列A=a.列A 
from  openrowset(  'SQLOLEDB ' 'sql服务器名 ' '用户名 ' '密码 ' ,数据库名.dbo.表名) as  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 
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  本地表  

               

                           

猜你喜欢

转载自cjp1989.iteye.com/blog/1968760