十二12 发表于 2016-11-14 00:59:34

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 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 本地表  
               
                           
页: [1]
查看完整版本: DB2 数据库操作笔记