Chinaunix首页 | 论坛 | 博客
  • 博客访问: 655984
  • 博文数量: 77
  • 博客积分: 6055
  • 博客等级: 准将
  • 技术积分: 617
  • 用 户 组: 普通用户
  • 注册时间: 2006-05-17 02:15
个人简介

一句话太少

文章分类

全部博文(77)

文章存档

2018年(1)

2015年(1)

2014年(1)

2013年(6)

2011年(1)

2010年(1)

2009年(4)

2008年(2)

2007年(21)

2006年(39)

我的朋友

分类: DB2/Informix

2007-06-21 10:02:26

1、244 锁表问题
   内容见下面连接
2、INFORMIX Client-SDK setNet32 客户端联接设置
执行
cd $INFORMIXDIR/etc 
vi sqlhosts
打开 sqlhosts 文件 参照其内容设置 informix setnet32 信息。
必要时可以通过打开 /etc/services 文件查看端口。
 
3、导出导入表数据
导出、导入表数据命令为unload、load。
命令执行环境在 dbaccess 的数据库操作环境下。
导出命令格式:
unload to filename.unl select * from T_table
导出表T_table 中数据到 filename.unl 文件。
 
导入命令格式
load from filename.unl insert into T_table
导入文件 filename.unl 的内容到 T_table 表中。
导入大表时建议用dbload
4、informix下 查看建表的SQL语句
dbschema -d dbname -t tabname -ss
 
不用-ss的话,只能看到表的列的信息,至于表的一些存储信息就看不到了,
如表是放在那个dbs上,extend size,next size,lock mode 等等
 
5、INFORMIX中怎么从现有的数据库生成建库脚本
用dbschema工具导出Informix数据库的结构
(1)导出数据库中所有的表结构到文件db.sql
$>dbschema -d your_database -t all db.sql

(2)导出数据库中所有的存储过程到文件db.sql
$>dbschema -d your_database -f all db.sql

(3)导出数据库中的所有对象(包含表,存储过程,触发器。。。)到文件db.sql
$>dbschema -d your_database db.sql

(4)导出数据库中一个表的结构到文件db.sql
$>dbschema -d your_database_name -t your_table_name db.sql

(5)导出一个存储过程定义到文件db.sql
$>dbschema -d your_database_name -f your_procedure_name db.sql

(6)如果导出更多的表的信息(EXTENT...)
$>dbschema -d your_database_name -ss db.sql

(7)导出数据库中对用户或角色的授权信息
$>dbschema -d your_database_name -p all
$>dbschema -d your_database_name -r all

(8)导出数据库中的同义词
$>dbschema -d your_database_name -s all

6、informix数据库中输入换行符
缺省情况下,字符串常量必须写在一行里面。也就是说,不能在引用字符串中加入换行符。然而,可以用下面两种方法覆盖缺省情况:
要在所有会话的引用字符串中允许使用换行符,要把 ONCONFIG 文件中的 ALLOW_NEWLINE 参数设成 1。
要在当前会话的引用字符串中允许使用换行符,可以执行内置函数 IFX_ALLOW_NEWLINE。
这就对当前会话启用了带引号字符串中的换行符:
 
EXECUTE PROCEDURE IFX_ALLOW_NEWLINE('T')
如果输入 't' 作为这个函数的参数,在会话中允许引用字符串包含换行符。如果输入 'f' 作为这个函数的参数,在会话中不允许引用字符串包含换行符。
 
如果没有对会话启用带引号字符串中的换行符,则以下语句无效并返回错误:
SELECT 'The quick brown fox
   jumped over the old gray fence'
   FROM customer
   WHERE customer_num = 101
然而,如果允许在会话的引用字符串中使用换行符,那么前面例子中的语句就是合法的并且能成功执行。
 
例子:
create table xx (
  a char(20)
);
Table created.
insert into xx values ('a
b');
  282: Found a quote for which there is no matching quote.
Error in line 1
Near character position 24
execute procedure ifx_allow_newline('t');
Routine executed.
insert into xx values ('a
b');
1 row(s) inserted.
select * from xx;

a                   
a
b                
1 row(s) retrieved.
update xx set a = 'xx'
where a = 'a
b';
1 row(s) updated.
select * from xx;

a                   
xx                 
1 row(s) retrieved.
 

QUOTE:
Script command is started on Wed Nov 21 13:53:56 BEIST 2007.
/tmp>cat | dbaccess xdbtest

Database selected.

select * from xyz;


x                    

aa
bb               
xyz                 

x                  

y                  

4 row(s) retrieved.

select * from xyz where x matches '*
*';

  
282: Found a quote for which there is no matching quote.
Error in line 1
Near character position 35
------  pay attention to this setting !!!!


execute procedure ifx_allow_newline('t');

Routine executed.

select * from xyz where x matches '*
*';


x                    

aa
bb               

x                  

y                  

3 row(s) retrieved.


select * from xyz where x not matches '*
*';


x                    

xyz                 

1 row(s) retrieved.

select * from xyz where x like '%
%';


x                    

aa
bb               

x                  

y                  

3 row(s) retrieved.

select * from xyz where x not like '%
%';


x                    

xyz                 

1 row(s) retrieved.

select count(*) from xyz where x matches '*
*';


      (count(*))

               3

1 row(s) retrieved.

select count(*) from xyz where x not like '%
%';


      (count(*))

               1

1 row(s) retrieved.

select count(*) from xyz;


      (count(*))

               4

1 row(s) retrieved.

select first 1 dbinfo ('version', 'full') from systables;


(constant)                                   

Informix Dynamic Server Version 9.30.F      

1 row(s) retrieved.

!uname -a
AIX p6701l1 2 5 0032EC4C4C00

!onstat -

Informix Dynamic Server Version 9.30.FC3     -- On-Line -- Up 17 days 09:38:33 -- 246544 Kbytes

^D

Database closed.

/tmp>

Script command is complete on Wed Nov 21 14:03:57 BEIST 2007.
 
7、修改数据库名称database
dbaccess 环境执行
rename database dbname to dbname1
注意不要打开dbname
执行时可以用cat |dbaccess
 
8、锁表
begin work
lock table in exclusive mode;
 
9、区分表中相同记录方法
任何表都有一个Rowid字段,可以用select Rowid,* from TableName ;
通过Rowid区分相同记录。

10、修改锁方式
1. 用命令: oncheck –pt database:tablename 查看目标表的锁方式;
2. 如果确定用alter table tablename lock mode (row) 来转换为行锁;



 
 

阅读(6271) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~