db2导入表结构和表数据

时间:2021-02-05 22:07:55

http://www.cnblogs.com/kfarvid/archive/2010/12/15/1906776.html   db2的博文

-bash-3.2$ db2 connect to cashman

   Database Connection Information

 Database server        = DB2/AIX64 9.7.0
 SQL authorization ID   = DB2INST1
 Local database alias   = CASHMAN

-bash-3.2$ db2look -d cashman -e -o db.sql -i db2inst1 -w '1qaz!QAZ'
-- No userid was specified, db2look tries to use Environment variable USER
-- USER is: DB2INST1
-- Creating DDL for table(s)
-- Output is sent to file: db.sql
-- Binding package automatically ...
-- Bind is successful
-- Binding package automatically ...
-- Bind is successful

DB2用命令窗口连接数据库

1、导出到 一个文件获得sql语句 
db2look -d cqyancao -e -o db.sql -i db2user -w psw 
           数据库名       要出文件名   用户名     密码 


示例: db2look -d DEPARTMENT -u walid -e -o db2look.sql 

-- 这将生成由用户 WALID 创建的所有表和联合对象的 DDL 语句 
-- db2look 输出被发送到名为 db2look.sql 的文件中

-bash-3.2$ cd /home/backup/mydata
-bash-3.2$ db2move cashman export -u db2inst1 -p '1qaz!QAZ'

EXPORT:      9 rows from table "DB2INST1"."T_WARNPARAM"
EXPORT:      0 rows from table "DB2INST1"."TEST"

Disconnecting from database ... successful!

End time:  Fri Nov 21 10:41:21 2014

在mydata文件里

-bash-3.2$ ls
EXPORT.out      tab20.ixf       tab33.ixf       tab46.msg       tab59.msg
db2move.lst     tab20.msg       tab33.msg       tab47.ixf       tab6.ixf

 

 

 

 

 

SQL0752N  Connecting to a database is not permitted within a logical unit of
work when the CONNECT type 1 setting is in use.  SQLSTATE=0A001

解释:
发出 COMMIT 或 ROLLBACK
语句之前,尝试连接另一个数据库或同一个数据库。在 CONNECT 1
类环境内不能处理该请求。
退出执行reset
重新执行就可以了,

[db2inst1@localhost ~]$ db2 connect reset

CREATE DATABASE TCASHMAN

CREATE SCHEMA TCASHMAN AUTHORIZATION TCASHMAN

db2 connect to TCASHMAN

db2 set current schema TCASHMAN

db2 -tvf /home/db2inst1/data/db_714.sql

db2 -tvf D:\cashplay.sql                         windows 下执行的脚本

其中特别注意,第一,如果不是多个schema,则可以不用第二行。第二,第三行中的参数-tvf,解释如下,

-f    读取输入文件

-t    设置语句终止字符

-v    回送当前命令

如果文件中每个语句是直接以回车结尾,则用-vf即可,加上-t是表示没条语句以“;”结尾。

 

db2 connect to db2inst1

db2

select * from t_user;

 

db2导出所有表数据

在数据库所在的服务器上

如aix上 新建一个目录,所有的表的数据将导出在这个目录,然后拷贝这个目录

db2 connect to tcashman

db2move tcashman export -u db2inst1 -p '1qaz!QAZ'

导入所有表的数据

如果db2cmd命令不是内外部命令

进入db2所在的sqllb下的bin目录,双击db2cmd

进入存放导出的db2数据文件的目录

db2 connect to newcash user db2admin using ‘1qaz!QAZ'

db2move newcash import -u db2admin -p 1qaz!QAZ

系统执行导入功能

$ cd /home/movedata 
$ db2move mytestdb import –u db2inst1 –p thepasswd 
此时屏幕上会显示有关导入数据的信息。 
存在的问题: 
db2move import方式只能导入“普通”的表,如果表中存在自增长的IDENTITY列,那么使用db2move import时,会出错。这是因为,如果IDENTITY列创建表的时候都是定义成always的话,那么在导入数据的时候该列数据是不能被赋值的,而是应该由系统生成,使用db2move无法导入这样的表。对于这种含有IDENTITY列的表,只能使用db2 import指令来进行导入,相关的参数是IDENTITYIGNORE,IDENTITYMISSING。我将在下一部分给出具体的指令操作。 
一句题外话: 
如果需要实现唯一主键,可以不必使用IDENTITY列,改而使用sequence,这样比较便于维护和管理。 
注意点: 
mybigspace可能要根据实际情况设值