欢迎来到千学网!
您现在的位置:首页 > 实用文 > 其他范文

Informix/4GL数据库查寻中的翻屏编程技巧数据库

时间:2023-06-01 09:18:47 其他范文 收藏本文 下载本文

以下是小编整理了Informix/4GL数据库查寻中的翻屏编程技巧数据库,本文共7篇,希望你喜欢,也可以帮助到您,欢迎分享!

Informix/4GL数据库查寻中的翻屏编程技巧数据库

篇1:Informix/4GL数据库查寻中的翻屏编程技巧数据库

informix-4GL是一个综合性的第四代应用程序 开发 和生成环境,它具有强大的 数据库 管理功能,编程灵活方便,界面友好,已被广泛应用于UNIX操作系统下的数据库管理,下面介绍一段借助屏幕表格完成查询的小程序,它可通过在屏幕上相应字段输入模糊查询条件,

informix-4GL是一个综合性的第四代应用程序开发和生成环境,它具有强大的数据库管理功能,编程灵活方便,界面友好,已被广泛应用于UNIX操作系统下的数据库管理。下面介绍一段借助屏幕表格完成查询的小程序,它可通过在屏幕上相应字段输入模糊查询条件,如*、=、?等,据此搜索出满足条件的全部记录,再按Ctrl-F或Ctrl-B分屏浏览(调用一个游标管理函数que_gz ),用上下光标键并结合Esc键选择所需记录,再通过内部函数arr_curr将此记录所包括的信息传出它用,在实际工作中可将此段程序写成函数形式,简洁明快,需要时只要改写相应变量即可,省时省力。此段程序在SCO UNIX Open Sever5.05、online7.3上编译通过。

程序清单:

屏幕格式:

database 数据库名

screen

{

人员代码 [a    ]

人员姓名 [b      ]

====================================

人员代码     人员姓名     工  资

[f000 ]    [f001   ]   [f002  ]

[f000 ]    [f001   ]   [f002  ]

[f000 ]    [f001   ]   [f002  ]

[f000 ]    [f001   ]   [f002  ]

[f000 ]    [f001   ]   [f002  ]

[f000 ]    [f001   ]   [f002  ]

[f000 ]    [f001   ]   [f002  ]

}

end

tables

gz

attributes

a=gz.xh,autonext;

b=gz.xm,autonext;

f000=formonly.xh type char;

f001=formonly.xm type char;

f002=formonly.gz type decimal(6,2);

end

instructions

screen record s_gz[7](formonly.xh,formonly.xm,formonly.gz)

gz库表结构:

序号:xh char(6)

姓名:xm char(8)

工资:gz decimal(7,2)

原文转自:www.ltesting.net

篇2:Java数据库编程中的几个常用技巧

1、java数据库操作基本流程

2、几个常用的重要技巧:

可滚动、更新的记录集

批量更新

事务处理

java数据库操作基本流程:取得数据库连接 - 执行sql语句 - 处理执行结果 - 释放数据库连接

1、取得数据库连接

1)用DriverManager取数据库连接

例子:

String className,url,uid,pwd;

className = “oracle.jdbc.driver.OracleDriver”;

url = “jdbc:oracle:thin:@127.0.0.1:1521:orasvr;

uid = ”system“;

pwd = ”manager“;

Class.forName(className);

Connection cn = DriverManager.getConnection(url,uid,pwd);

2)用jndi(java的命名和目录服务)方式

例子

String jndi = ”jdbc/db“;

Context ctx = (Context) new InitialContext().lookup(”java:comp/env“);

DataSource ds = (DataSource) ctx.lookup(jndi);

Connection cn = ds.getConnection();

多用于jsp中

2、执行sql语句

1)用Statement来执行sql语句

String sql;

Statement sm = cn.createStatement();

sm.executeQuery(sql); // 执行数据查询语句(select)

sm.executeUpdate(sql); // 执行数据更新语句(、update、、drop等)statement.close();

2)用PreparedStatement来执行sql语句

String sql;

sql = ” into user (id,name) values (?,?)“;

PreparedStatement ps = cn.prepareStatement(sql);

ps.setInt(1,xxx);

ps.setString(2,xxx);

...

ResultSet rs = ps.executeQuery(); // 查询

int c = ps.executeUpdate(); // 更新

3、处理执行结果

查询语句,返回记录集ResultSet。

更新语句,返回数字,表示该更新影响的记录数。

ResultSet的方法:

1、next(),将游标往后移动一行,如果成功返回true;否则返回false。

2、getInt(”id“)或getSting(”name“),返回当前游标下某个字段的值。

3、释放连接。

cn.close();

一般,先关闭ResultSet,然后关闭Statement(或者PreparedStatement);最后关闭Connection

可滚动、更新的记录集

1、创建可滚动、更新的Statement

Statement sm = cn.createStatement(ResultSet.TYPE_SCROLL_ENSITIVE,ResultSet.CONCUR_READ_ONLY);

该Statement取得的ResultSet就是可滚动的

2、创建PreparedStatement时指定参数

PreparedStatemet ps = cn.prepareStatement(sql,ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);

ResultSet.absolute(9000);

批量更新

1、Statement

Statement sm = cn.createStatement();

sm.addBatch(sql1);

sm.addBatch(sql2);

...

sm.executeBatch()

一个Statement对象,可以执行多个sql语句以后,批量更新。这多个语句可以是、update、等或兼有

2、PreparedStatement

PreparedStatement ps = cn.preparedStatement(sql);

{

ps.setXXX(1,xxx);

...

ps.addBatch();

}

ps.executeBatch();

一个PreparedStatement,可以把一个sql语句,变换参数多次执行,一次更新。

事务的处理

1、关闭Connection的自动提交

cn.setAutoCommit(false);

2、执行一系列sql语句

要点:执行每一个新的sql语句前,上一次执行sql语句的Statement(或者PreparedStatemet)必须先close

Statement sm ;

sm = cn.createStatement( into user...);

sm.executeUpdate();

sm.close();

sm = cn.createStatement(” into corp...);

sm.executeUpdate();

sm.close();

3、提交

cn.commit();

4、如果发生异常,那么回滚

cn.rollback();

[Java数据库编程中的几个常用技巧]

篇3:PowerDesign9.5+ 中的GTL编程 解决大问题数据库教程

编程|解决|问题

在开发数据库模型时,通常会有这样的需求

输入一个 表或字段的中文名称 自动生成它的中文拼音首字母简写功能

如 :

设备_变压器 自动形成数据库表名 SB_BYQ

在 POWERDesigner 9.5 以上版本中可以这样设置

打开 1,Tools >ModelOptions..对话框

2。点击左边 Name Convension 树形结点

3。在右边面板中选择 Name/Code Convensions 选择框

4。在 Name/Code 页中 Convension Script. 输入框中输入下面的代码

.foreach_part(%Name%,“.”)

.vbscript(%CurrentPart%)

ScriptResult=getpy(ScriptInputArray(0))

function getpychar(char)

tmp=65536+asc(char)

if(tmp>=45217 and tmp<=45252) then

getpychar= “A”

elseif(tmp>=45253 and tmp<=45760) then

getpychar= “B”

elseif(tmp>=45761 and tmp<=46317) then

getpychar= “C”

elseif(tmp>=46318 and tmp<=46825) then

getpychar= “D”

elseif(tmp>=46826 and tmp<=47009) then

getpychar= “E”

elseif(tmp>=47010 and tmp<=47296) then

getpychar= “F”

elseif(tmp>=47297 and tmp<=47613) then

getpychar= “G”

elseif(tmp>=47614 and tmp<=48118) then

getpychar= “H”

elseif(tmp>=48119 and tmp<=49061) then

getpychar= “J”

elseif(tmp>=49062 and tmp<=49323) then

getpychar= “K”

elseif(tmp>=49324 and tmp<=49895) then

getpychar= “L”

elseif(tmp>=49896 and tmp<=50370) then

getpychar= “M”

elseif(tmp>=50371 and tmp<=50613) then

getpychar= “N”

elseif(tmp>=50614 and tmp<=50621) then

getpychar= “O”

elseif(tmp>=50622 and tmp<=50905) then

getpychar= “P”

elseif(tmp>=50906 and tmp<=51386) then

getpychar= “Q”

elseif(tmp>=51387 and tmp<=51445) then

getpychar= “R”

elseif(tmp>=51446 and tmp<=52217) then

getpychar= “S”

elseif(tmp>=52218 and tmp<=52697) then

getpychar= “T”

elseif(tmp>=52698 and tmp<=52979) then

getpychar= “W”

elseif(tmp>=52980 and tmp<=53640) then

getpychar= “X”

elseif(tmp>=53689 and tmp<=54480) then

getpychar= “Y”

elseif(tmp>=54481 and tmp<=62289) then

getpychar= “Z”

else '如果不是中文,则不处理

getpychar=char

end if

end function

function getpy(str)

for i=1 to len(str)

getpy=getpy&getpychar(mid(str,i,1))

next

end function

.endvbscript

篇4:非Access数据库在VB中的编程及应用

非Access数据库在VB中的编程及应用

摘要

Visual Basic有着强大的数据库存取能力,不仅能够直接支持Ms Access数据库,而且通过其内部安装的ISAM驱动程序使它能间接支持FoxPro、dBASE等外来数据库。本文不仅从VB数据库体系结构的角度探讨了VB对这些外来数据库的支持,还结合了一些实例具体阐述了使用数据库存取对象变量的方法实现这些外来数据库的新建、库结构修改、显示及其运行环境设置。

关键词

Visual Basic Access, 外来数据库,数据库

正文

存取对象变量库结构作为一个功能较完备的Windows软件开发平台,Visual Basic专业版提供了对数据库应用的强大支持。尤其提供了使用数据控件和绑定控制项,使用数据库存取对象变量(Data Access Object Variable),直接调用ODBC 2.0 API接口函数等三种访问数据库的方法。对其标准内置的Ms Access数据库,它可以提供不弱于专业数据库软件的支持,可以进行完整的数据库维护、操作及其事务处理。在VB中,将非Access数据库称为外来数据库。对于FoxPro、dBASE、Paradox等外来数据库。虽然借助VB的Data Manager 能够对这些数据库进行NEW、OPEN、DESIGN、DELETE等操作,但在应用程序的运行状态中并不能从底层真正实现这些功能。本文从使用数据库存取对象变量的方法出发,实现了非Access格式数据库(以FoxPro数据库为例)的建新库、拷贝数据库结构、动态调入等操作,阐述了从编程技巧上弥补VB对这些外来数据库支持不足的可行性 。

一 、VB数据库的体系结构具体的VB的数据库结构。

VB数据库的核心结构是所谓的MicroSoft JET数据库引擎,JET引擎的作用就像是一块“面 板”,在其上可以插入多种ISAM(Indexed Sequential Access Method,即索引顺序存取方 法) 数据驱动程序。JET引擎为Access格式数据库提供了直接的内部(build-in)支持,这就是VB对Access数据库具有丰富支持的真正原因。

VB专业版中提供了FoxPro、dBASE(或 Xbase)、Paradox、Btrieve等数据库的ISAM驱动程序,这就使得VB能支持这些数据库格 式。另外,其他的许多兼容ISAM的驱动程序也可以通过从厂商的售后服务得到。因而从理论上说,VB能支持所有兼容ISAM的数据库格式(前提是只需获得这些数据库的ISAM驱动接口程序)。

由上可见,Ms JET引擎实质上提供了:一个符合ANSI标准的语法分析器;为查询结果集的.使用而提供的内存管理功能;同所支持的数据库的外部接口;为应用代码提供的内部接口。实际上,在VB中从一种数据库类型转化为另一种数据库类型几乎不需要或只需要很少的代码修改。而且,尽管dBASE、Paradox本身的DDL (Data Definition Language,即数据定义语言)和DML(Data Manipulation Language,即数据操纵语言)是非结构化查询的,但它们仍然可以使用VB的SQL语句和JET引擎来操纵。

从VB的程序代码的角度来看,ODBC,ISAM驱动程序以及Ms Access数据库的整个外部结构够可以统一为一个一致的编程接口。也即是说,提供给VB应用程序员的记录集对象视图同所使用的数据库格式及类型是相互独立的。即对FoxPro等数据库仍然可以使用众多的数据库存取对象变量,这就为非Access数据库的访问提供了最重要的方法。

二 、使用非Access数据库时的参数设置及配置文件的参数读取如果在VB的程序中使用了数据库的操作,将应用程序生成EXE文件或打包生成安装程序后,则必须提供一个配置 (.INI)文件,在INI文件中可以对不同类型的数据库进行设置。如果找不到这个INI文件, 将会导致不能访问数据库。通常情况下,INI文件的文件名和应用程序的名称相同,

[1] [2] [3] [4]

篇5:WIN技巧:Exchange中缩小数据库的体积的方法

在人们问我的大多数关于Exchange的问题当中,有这么一个问题:为什么当管理员删除 了一些没用的旧邮箱或者公用目录以后,数据库的大小并没有改变呢?不幸的是,这个问题的答案并不那么简单,实际上数据库的大小的确是改变了,但是数据库文件的大小却没有改变。

当您删除了邮箱或者公用目录之后,您实际上是把这些记录从数据中移除了,这样的确是释放了数据库内部的空间并减小了数据库的大小,但对于数据库文件的体积大小来说,这样做并不起作用。您只能通过使用文件碎片整理来改变数据库文件的大小。

您很可能比较熟悉碎片整理,因为这是和文件系统相关联的。当您在硬盘上创建或者删除文件时,硬盘就会逐渐产生文件碎片。这样一来,磁盘的读写性能就会降低,因为Windows在写入、创建或者修改一个文件的同时,是不能再进行其他的哪怕是单一的读、写操作的。实际上,在硬盘进行读、写操作的时候,硬盘磁头不得不跳过盘片上某些间隙或者未使用的空间来读取分散的文件碎片或者写入数据。

只是您可能还未注意到这一点,那就是文件碎片在数据库中也是存在的。当创建邮箱或者删除邮箱时,数据库本身会产生碎片,这一点和在文件系统中产生碎片的情况很类似。而且正如文件系统中性能的降低一样,充满碎片的数据库性能也会降低。

自动碎片整理

微软在Exchange和Exchange中都分别提供了自动整理碎片的功能以促进数据库性能的提高。这个功能会在每天凌晨1点到5点之间自动对各种Exchange数据库进行碎片整理操作。

自动碎片整理功能有一些很实用的特性。第一,您不必亲自动手做数据库的碎片整理工作了(不过您还是得自己对文件系统进行碎片整理)。第二,在进行碎片整理时数据库仍处于在线状态,这样您还是可以照常访问您的邮件。第三,如果这个自动碎片整理的功能和其他一些操作存在冲突,您还可以重新为它制订执行计划。

如果您想改变自动碎片整理的时间计划,只要打开Exchange系统管理工具,在要进行操作的数据库上单击右键,然后在弹出的快捷菜单中选择属性即可。这时您会看到该数据库的属性列表,请切换到数据库选项卡并单击维护间隔部分的自定义按钮。然后您就可以自定义您的自动碎片整理计划了。要注意一点,您需要为您的每个数据库都都设置一下,您的自定义时间计划才会在该数据库上有效,

在碎片整理之前和之后进行备份

现在我已经解释了自动碎片整理是如何工作的了。那让我们回到最开始的问题,为什么您的Exchange数据库在进行了碎片整理之后,数据库文件的体积还是没改变呢?

原来,数据库文件大小不改变的问题出在数据库本身。在数据库的头部,明确的指定了一定的空间大小分配给数据库文件所使用。而碎片整理只移除了数据库内部的无效记录以提升数据库的性能,却并没有压缩数据库。所以数据库文件还是占用了一些无必要的空间。

而找回这些丢失的空间的唯一方法就是手动执行一次脱机碎片整理。必需手动的原因就是脱机碎片整理要在数据库处于脱机状态下才能运行,这样的话在进行碎片整理期间就不能访问邮件了。

不过在我解释脱机碎片整理是如何工作之前,我必须提醒您一些值得注意的地方。您应该在执行脱机碎片整理之前和之后都对您的数据库进行一次完全备份的操作。在脱机碎片整理之前进行完全备份是非常重要的,因为碎片整理这个过程会重写数据库,有可能会发生一些错误。所以您需要一次完全备份以便能够在数据库发生一些重大错误之后恢复到正常的状态。而在进行碎片整理之后进行完全备份的原因是,脱机碎片整理之后的增量备份或者差异备份都会无效。如果您尝试在脱机碎片整理之后对数据库进行增量备份或者差异备份的话,备份程序会尝试备份那些已经被移除的记录而最终导致备份无效。

如何进行脱机碎片整理

要进行脱机碎片整理的话只需要将数据库置于脱机状态并执行ESEUTIL命令,并且加上参数D即可。在Exchange2000中,ESEUTIL程序在Exchange 2000的安装光盘的SUPPORTUTILS目录下。而在Exchange 2003中,安装程序会自动将ESEUTIL安装至服务器硬盘的Program FilesEXCHSRVRBIN 目录下。

关于使用ESEUTIL进行碎片整理,您还必须知道的一点是,默认情况下ESEUTIL实际上是创建了一个全新的空数据库,并将您想要整理的数据库中必要的数据拷贝过去之后将旧数据库删除。这样可以节约磁盘空间,不过也意味着如果出现什么错误的话您将不能恢复至原有数据库的状态了。

我推荐您将参数P和参数D一起使用。参数P可以令ESEUTIL保留原有的数据库。这样您就可以在确认新的数据库工作正常之后再手动删除旧的数据库。所以请在您进行脱机碎片整理之前确保您的服务器有足够的硬盘空间来存储这两个数据库。

欲查询更多关于脱机碎片整理的信息,请查看微软的知识库文章,编号192185(support.microsoft.com/?kbid=192185),

篇6:在Delphi中的Access技巧集数据库教程

1.DELPHI中操作ACCESS数据库(建立.mdb文件,压缩数据库)

以下代码在WIN2K,D6,MDAC2.6下测试通过,

编译好的程序在WIN98第二版无ACCESS环境下运行成功.

//在之前uses ComObj,ActiveX

//声明连接字符串

Const

SConnectionString = 'Provider=Microsoft.Jet.OLEDB.4.0;Data Source=%s;'

+'Jet OLEDB:Database Password=%s;';

//=============================================================================

// Procedure: GetTempPathFileName

// Author : ysai

// Date : 2003-01-27

// Arguments: (None)

// Result : string

//=============================================================================

function GetTempPathFileName:string;

//取得临时文件名

var

SPath,Sfile&:array [0..254] of char;

begin

GetTempPath(254,SPath);

GetTempFileName(SPath,'~SM',0,SFile);

result:=SFile;

DeleteFile(PChar(result));

end;

//=============================================================================

// Procedure: CreateAccessFile

// Author : ysai

// Date : 2003-01-27

// Arguments: FileName:String;PassWord:string=''

// Result : boolean

//=============================================================================

function CreateAccessFile(FileName:String;PassWord:string=''):boolean;

//建立Access文件,如果文件存在则失败

var

STempFileName:string;

vCatalog:OleVariant;

begin

STempFileName:=GetTempPathFileName;

try

vCatalog:=CreateOleObject('ADOX.Catalog');

vCatalog.Create(format(SConnectionString,[STempFileName,PassWord]));

result:=CopyFile(PChar(STempFileName),PChar(FileName),True);

DeleteFile(STempFileName);

except

result:=false;

end;

end;

//=============================================================================

// Procedure: CompactDatabase

// Author : ysai

// Date : 2003-01-27

// Arguments: AFileName,APassWord:string

// Result : boolean

//=============================================================================

function CompactDatabase(AFileName,APassWord:string):boolean;

//压缩与修复数据库,覆盖源文件

var

STempFileName:string;

vJE:OleVariant;

begin

STempFileName:=GetTempPathFileName;

try

vJE:=CreateOleObject('JRO.JetEngine');

vJE.CompactDatabase(format(SConnectionString,[AFileName,APassWord]),

format(SConnectionString,[STempFileName,APassWord]));

result:=CopyFile(PChar(STempFileName),PChar(AFileName),false);

DeleteFile(STempFileName);

except

result:=false;

end;

end;

//=============================================================================

// Procedure: ChangeDatabasePassword

// Author : ysai

// Date : 2003-01-27

// Arguments: AFileName,AOldPassWord,ANewPassWord:string

// Result : boolean

//=============================================================================

function ChangeDatabasePassword(AFileName,AOldPassWord,ANewPassWord:string):boolean;

//修改ACCESS数据库密码

var

STempFileName:string;

vJE:OleVariant;

begin

STempFileName:=GetTempPathFileName;

try

vJE:=CreateOleObject('JRO.JetEngine');

vJE.CompactDatabase(format(SConnectionString,[AFileName,AOldPassWord]),

format(SConnectionString,[STempFileName,ANewPassWord]));

result:=CopyFile(PChar(STempFileName),PChar(AFileName),false);

DeleteFile(STempFileName);

except

result:=false;

end;

end;

2.ACCESS中使用SQL语句应注意的地方及几点技巧

以下SQL语句在ACCESS XP的查询中测试通过

建表:

Create Table Tab1 (

ID Counter,

Name string,

Age integer,

[Date] DateTime);

技巧:

自增字段用 Counter 声明.

字段名为关键字的字段用方括号[]括起来,数字作为字段名也可行.

建立索引:

下面的语句在Tab1的Date列上建立可重复索引

Create Index iDate ON Tab1 ([Date]);

完成后ACCESS中字段Date索引属性显示为 - 有(有重复).

下面的语句在Tab1的Name列上建立不可重复索引

Create Unique Index iName ON Tab1 (Name);

完成后ACCESS中字段Name索引属性显示为 - 有(无重复).

下面的语句删除刚才建立的两个索引

Drop Index iDate ON Tab1;

Drop Index iName ON Tab1;

ACCESS与SQLSERVER中的UPDATE语句对比:

SQLSERVER中更新多表的UPDATE语句:

UPDATE Tab1

SET a.Name = b.Name

FROM Tab1 a,Tab2 b

WHERE a.ID = b.ID;

同样功能的SQL语句在ACCESS中应该是

UPDATE Tab1 a,Tab2 b

SET a.Name = b.Name

WHERE a.ID = b.ID;

即:ACCESS中的UPDATE语句没有FROM子句,所有引用的表都列在UPDATE关键字后.

上例中如果Tab2可以不是一个表,而是一个查询,例:

UPDATE Tab1 a,(Select ID,Name From Tab2) b

SET a.Name = b.Name

WHERE a.ID = b.ID;

访问多个不同的ACCESS数据库-在SQL中使用In子句:

Select a.*,b.* From Tab1 a,Tab2 b In 'db2.mdb' Where a.ID=b.ID;

上面的SQL语句查询出当前数据库中Tab1和db2.mdb(当前文件夹中)中Tab2以ID为关联的所有记录.

缺点-外部数据库不能带密码.

补充:看到ugvanxk在一贴中的答复,可以用

Select * from [c:\aa\a.mdb;pwd=1111].table1;

ACCESS XP测试通过

在ACCESS中访问其它ODBC数据源

下例在ACCESS中查询SQLSERVER中的数据

SELECT * FROM Tab1 IN [ODBC]

[ODBC;Driver=SQL Server;UID=sa;PWD=;Server=127.0.0.1;DataBase=Demo;]

外部数据源连接属性的完整参数是:

[ODBC;DRIVER=driver;SERVER=server;DATABASE=database;UID=user;PWD=password;]

其中的DRIVER=driver可以在注册表中的

HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBCINST.INI\

中找到

异构数据库之间导数据参见 碧血剑 的

www.delphibbs.com/delphibbs/dispq.asp?lid=1691966

ACCESS支持子查询

ACCESS支持外连接,但不包括完整外部联接,如支持

LEFT JOIN 或 RIGHT JOIN

但不支持

FULL OUTER JOIN 或 FULL JOIN

ACCESS中的日期查询

注意:ACCESS中的日期时间分隔符是#而不是引号

Select * From Tab1 Where [Date]>#-1-1#;

在DELPHI中我这样用

SQL.Add(Format(

'Select * From Tab1 Where [Date]>#%s#;',

[DateToStr(Date)]));

ACCESS中的字符串可以用双引号分隔,但SQLSERVER不认,所以为了迁移方便和兼容,

建议用单引号作为字符串分隔符.

篇7:不同数据库中机构检索的检索方法及技巧论文

不同数据库中机构检索的检索方法及技巧论文

当前,很多高校科研管理部门每年都会进行科研成果统计,对本机构内科研活动状况进行定量测定。通过不同数据库的机构检索,能够反映高校科学研究的动态和水平,从而为在院校的学科建设、科研规划、人才培养、宏观决策的制定等方面建立机构知识库提供重要依据; 同时也有助于与拥有相近学科的高校进行横向比较。在实际工作中,经常会接到某高校科研处的委托,请求检索该高校人员在某个时间段( 常常是逐年委托连续起来) 发表的论文在国内外著名检索工具中的收录情况,借以统计该机构的科研成果。

1 机构检索中遇到的问题

在检索时发现,机构中英文名称不规范的情况很普遍,如机构名称有常用名称和别名,机构名称采用缩写或简写,机构改名后仍然有为数不少的作者沿用原来机构的英文名称。还有一些作者在发表论文时未使用所在机构的正式英文名称,有好几种非正式名称出现[1 -2].这给检索过程中想要求全带来极大的困难。另外,不同的数据库收录论文时着录规则不同,如果检索策略不对,会导致检索结果出入很大[3].笔者根据实际工作中积累的经验,介绍以机构委托时通常会用来统计的数据库以及在不同数据库中检索的具体方法及技巧,确保检索机构的查全率和查准率。

2 机构检索时通常选取的国内外著名数据库

现在很多高校都是综合性大学,理工文史哲经管农医教各学科都有。所以在成果统计时可以大致按照自然科学和社会科学来分类。其中,自然科学类常用的数据库有 SCI、EI Compendex、CPCI - S、MEDLINE、CSCD、CNKI 等,社会科学类常用的数据库有 SSCI、A&HCI、CPCI - SSH、CSSCI 等。这其中又区分这些数据库的核心版和非核心版的收录情况。这些数据库都是在国内外有重大影响力的数据库,其中有专门收录期刊论文的,或专门收录会议论文的,也有都收录的。

除了上述检索收录时常用的数据库,基本科学指标数据库( Essential Science Indicators,简称 ESI)也是机构检索的重要工具,它是由世界著名的学术信息出版机构美国科技信息所( ISI) 于 2001 年推出的衡量科学研究绩效、跟踪科学发展趋势的基本分析评价工具,是当今世界范围内普遍用以评价大学、科研机构、个人国际学术水平及影响力的重要指标。

3 不同数据库中可以使用的着录规则特征及基本检索方法

机构人员发表论文时一般都会在作者地址中留下机构名称、具体地址及邮编,团体作者也符合这个特点。所以检索时考虑凡地址字段中出现该机构名称即可确认是该机构人员发表的`论文。

不同数据库对信息的着录规则不同,会导致同样的检索策略检索出的结果差别很大。而同一家数据库商所做的同一平台上的数据库的着录方法是基本一致的,所以这里按照不同的平台来介绍。

3. 1 ISI平台

目前,我们常用的是 ISI平台上的 Web of Sci-ence Core Collection 数 据 库 集,包 括: SCI / SSCI /A&HCI / CPCI - S / CPCI - SSH / CCR / IC 等 7 个数据库,该平台还有 MEDLINE/BIOSIS 等数据库。

通过在作者地址中输入机构和/或地点的完整或部分名称,可以检索“地址”字段。例如,Univ 和University 可查找记录中的地址字段出现检索词 “Univ” 的机构。

可以使用逻辑运算符( AND、OR、NOT、NEAR和 SAME) 和通配符 ( * $ ?) 来组合检索使检索结果更精确。但是检索包含上述逻辑运算符的地址,需要将该运算符名称括在引号内。

在检索时,逻辑运算符和通配符的使用与其他数据库的不同点在于:SAME 运算符指定了由运算符连接的检索词位于同一地址,而不仅仅是位于相同的字段,使得检索结果更精确。

使用 NEAR/x 可查找由该运算符连接的检索词之间相隔指定数量单词的记录。该规则也适用于单词处于不同字段的情况,用数字取代 x( x≤15) 可指定将检索词分开的最大单词数。

通配符星号 ( * ) 表示任何字符组,包括空字符,只能放在词尾。

通配符问号 ( ?) 表示任意一个字符,用于单词中间。

通配符美元符号 ( $ ) 表示零或一个字符,可用于词尾或词中间。

3. 2 Engineering Village平台

目前,国家图书馆仅购买了该平台的 EI Com-pendex 数据库,所以以下只针对该数据库的检索规则进行介绍。

作者地址字段 Author affiliation 简写为 AF 字段。EI Compendex 数据库提供了该字段的索引,但实际按照作者机构检索时发现效果很不理想,原因在于作者对机构名称的书写不规范,用索引列表很难穷尽。

EI Compendex 数据库也提供了逻辑运算符( AND、OR、NOT、NEAR 、ONEAR 和 SAME) 和通配符 ( * $ ?) 组合检索来提高检索效率和精准度。

但是具体的使用方法和含义不尽相同。

截词符星号 ( * ) 用来检索以相同字母开始的单词。

通配符问号 ( ?) 表示任意一个字符,用于单词中间。

美元符号 ( $ ) 表示词干搜索条件。在一个完整的单词前面加上 $ ,可以将其各种形式的变形都搜索出来。

位置算符 NEAR 或 ONEAR 限制检索时两个词组之间距更邻近,ONEAR 更是限定了词与词之间的先后顺序。但它们不能与* 、?、( ) 、{ } 、“”同时使用。

3. 3 ESI 数据库

ESI 数据库的功能主要包括 3 个方面: 引用排行( Citation Rankings) 、高被引论文( Most Cited Pa-pers) 和引用分析( Citation Analysis)[7].ESI 根据各机构不同学科领域 10 年内论文的被引频次的总和对机构进行排名。ESI 中机构名称都很规范,只考虑机构的正式英文名称即可。

可以按学科浏览,查看在同一学科不同机构的排名情况; 也可以进行机构检索,查看同一机构在不同学科的排名情况; 也可以检索该机构近10 年来在某学科的高被引论文数或热点论文数。

机构检索时默认在地址字段检索,只要包含该机构名称就符合检索条件。可以浏览字顺表进行机构检索,或用机构正式英文名称的缩写进行检索; 输入“HARVARD UNIV”,对应机构名称就是 HAR-VARD UNIV; 输入“HARVARD UNIV* ”,检索结果为包含前述两个词的任一地址,如: HARVARDUNIV 或 HARVARD UNIV MEDICAL AFFILIATES.

3. 4 中文数据库 CSCD / CSSCI / CNKI

CSCD 数据库机构字段只需了解加双引号( “”)是精确检索。不加是模糊检索。

CSSCI 数据库中作者机构字段默认就是精确检索。

CNKI 数据库中单位字段提供精确或模糊两种选择。这里要说明的是在机构检索时需要选择“模糊”,因为 CNKI 中“精确”是与所输入检索词完全匹配,而机构地址通常都是某大学某学院某系等信息,选择“精确”就会造成漏检很多。

中文数据库由于没有语言问题,相对来说检索规则也较简单,不再另述其检索技巧。都可以区分核心版和非核心版。需要注意的是,一定要将机构名称的常用名、别名、简写或缩写找全,并配合地址和邮编来检索,这样才能保证检索结果既全面又准确。

4 机构检索在英文数据库中的检索技巧

根据我们多年的实际工作经验,认为初步设定检索式时要尽可能的放大范围以保证检索全面; 同时,既考虑增加检索条件,又要使用算符,确保检索准确性。当机构名称较长时,不容易引起干扰; 机构名称简单,则干扰项会很多。

4. 1 机构名称较长,直接用机构名称检索引起的干扰项较少

以华北水利水电大学为例,检索该机构 2013 年发表的论文在数据库中收录情况。

该机构的正式英文名称及邮编为:North China University of Water Resources and ElectricPower ,Henan Zhengzhou 450011地址字段输入邮编 450011,浏览可发现该机构的其他不规范写法,例如:“水利”有用 Water Resources 或 Water Conservancy,“水电”有用 Electric Power 或 hydroelectric Power,“学院”有用 U-niversity 或 institute.

以 SCI 为例,SCI 数据库中地址字段检索时默认词与词之间的精确顺序,构造检索式如下:ad = ( N* China ( Univ* or inst* ) Water ( Conservan*or Resource* ) ( Elect* or Hydroelec* ) Powe* or 450011)以 EI Compendex 为例,EI Compendex 数据库检索时默认词与词之间就是“and”关系,不指定检索词的顺序。这个原则适用于地址字段。所以实际检索时要具体情况具体分析。考虑到该机构名称较长,模糊检索,干扰项也不会太多。所以直接将检索式变更为 EI 中格式即可,如下:( N* China and ( Univ* or inst* ) and Water and ( Con-servan* or Resource * ) and ( Elect * or Hydroelec * ) andPowe* ) wn AF or 450011 wn AF

4. 2 机构名称简单,直接用机构名称检索引起的干扰项很多

当机构名称较短时,就会有很多干扰项。如检索“河北大学”,该机构正式名称及地址如下:Hebei University,Hebei Baoding 071002在 SCI 地址字段输入 Hebei Univ* 检索,会发现以 Hebei Univ* 打头的各种干扰项,如: HEBEIUNIV TECHNOL 、HEBEI UNIVERSITY OF TECH-NOLOGY、HEBEI UNIVERSITY OF SCIENCE TECH-NOLOGY 、HEBEI UNIV ECON BUSINESS 等等;在 EI 地址字段输入 Hebei Univ* 检索,会发现只要地址字段中包含了 Hebei 和 University 两个词,就满足了检索条件,导致检索结果极不精确,除了上述干扰项,还会有诸如: HEBEI MEDICAL UNIVER-SITY、HEBEI NORTH UNIV、HEBEI UNITED UNIV等等。

这时,一方面可以通过增加检索条件,如将机构名称与地址或邮编组合检索来缩小范围使得检索结果更精确。也避免了漏检同时将地址和邮编都写错的情况。

以 2013 年 SCI 收录为例:原检索式: ad = ( hebei univ* ) and py =2013 检索结果:1023 条修改为: ad = ( Hebei Univ* and ( Baoding or 071002) )and py = 2013,检索结果: 469 条可以看出修改后的检索式大大提高了准确率。

然后再在这个相对准确的结果中去确认就容易得多。

以上操作都是基于先将范围最大化从而不会漏检,保证检索结果更全面的角度出发。

另一方面,巧妙使用数据库中的算符以提高准确率。

以河北北方学院 2013 年发表论文的 SCI 收录情况为例:机构正式名称及地址: Hebei North University,hebeiZhangjiakou 075000North 在数据库中有可能以 NORTH 或 N 或 Northern出现。

构造原检索式: ad = hebei n* univ* and py =2013 检索结果: 450 条情况 1: 粗略浏览检索结果发现干扰项 HEBEI NORMALUNIVERSITY 很多,去除干扰项,检索式修改为: ad = ( hebein* univ* not hebei norm* univ* ) and py = 2013 检索结果: 59 条但这样会将地址字段既有河北北方学院又有河北师范大学的条目也去掉,所以补充修改检索式为:( ad = ( hebei n* univ* not hebei norm* univ* ) or ad= ( hebei nort* univ* and hebei norm* univ* ) ) and py =2013 检索结果: 60 条情况 2: 使用地址与名称组合检索。如上文中介绍,在 SCI 地址字段检索时,算符 SAME 有将检索词限制于同一地址检索的功能,所以做对比如下:原检索式: ad = ( hebei n * ( univ * or coll * ) and( zhangjiakou or 075000) ) and py =2013 检索结果: 60 条修改为: ad = ( hebei n * ( univ * or coll * ) same( zhangjiakou or 075000) ) and py =2013 检索结果: 58 条可见,使用 same 算符后检索结果更精确。

再以 EI 数据库中地址字段检索举例说明:原检索式: Hebei north* univ* wn af 发表时间: 2013 年检索结果: 640 条( 可以单独检索 hebei n univ* 以补充全面)如上文介绍,位置算符 NEAR 或 ONEAR 可以使检索结果更准确。可以修改检索式如下,以便看出其中差别:#1 Hebei NEAR north NEAR university wn af 发表时间:2013 年 检索结果: 92 条#2 Hebei ONEAR north ONEAR university wn af 发表时间: 2013 年 检索结果: 76 条#3 Hebei NEAR /0 north NEAR /0 university wn af 发表时间: 2013 年 检索结果: 74 条#4 Hebei ONEAR /0 north ONEAR /0 university wn af 发表时间: 2013 年 检索结果: 74 条注释: #1 和#2 中没有指定相邻几个词时,默认是 4 个词。即 NEAR 等同于 NEAR/4.

可以看出,检索结果变少,范围缩小。以上检索默认数据库打开 Autostemming 功能,自动进行词干检索,如 north 的变形 northern 也包含在检索结果内。这个功能也可以通过使用词干搜索符号 ( $ )实现。修改检索式为:#5 Hebei ONEAR /0 $ north ONEAR /0 $ university WNAF 发表时间: 2013 年 检索结果: 74 条但是,由于 NEAR 或 ONEAR 算符不能与* 、?、( ) 、{ } 、“”同时使用,尤其是截词符* ,这就使得检索结果不全面,如检索式#1 到#5 均无法检索到 uni-versity 的缩写 univ.

以上仅是为了说明算符的重要性,在实际检索时要将上述几项合并使用。

5 建议

( 1) 有关单位规范机构和地址名称及其英文翻译名称,科技工作者在撰写论文时也要采用正式的机构和地址的中英文名称,减少不规范因素,这样就不会漏查; 检索人员应多学习数据库的着录规则,了解不同数据库的着录格式,在构建检索策略时更加全面更加精确,提高查全查准率。

( 2) 相关工作人员在做机构检索时,可以按照下述方式进行: 与委托单位科研处沟通,获知该机构的正式名称与地址,以及是否有曾用名称、地址邮编的变化等信息,这样在检索之前全面了解被检索机构的各种信息; 充分利用数据库不同的着录规则去检索,获取到相关检索结果并反馈给科研处; 请科研处人员确认并发布,收集极个别的遗漏信息再单独补充。这样完成的机构检索就既全面又准确了。

参 考 文 献

[1] 张 冰。 科技期刊学术论文中作者单位名称着录存在问题及建议[J]. 内 蒙 古 大 学 学 报 ( 自 然 科 学 版) ,2009 ( 2) :225 - 228.

[2] 谢 群。 在 WebofScience 中准确进行中文机构检索的方法研究[J]. 图书馆论坛,2011( 1) : 155.

[3] 于澄洁。 EiCompendex 数据库作者机构检索技巧[J]. 图书馆杂志,2010( 12) : 29 -30.

[4] [ EB/OL].webofknowledge. com/WOKRS5132R4. 2 / help.[2014 - 11 - 30].

[5] [EB/OL].[2014 - 11 -30].

[6] 孙 君,陈 陶。 提高文献查全率和查准率的有效途径_省略_算符_位置算符和通配符的灵活运用_孙君[J]. 现代情报,2006( 10) : 167 - 169.

[7] 韩 欣,刘子忠。 ESI 计量分析数据库的功能与科学评价---以中国地学研究机构的科学评价为例[J]. 地质科技情报,2010( 1) : 138 - 142.

Informix Online 数据库维护技巧数据库

信息管理中数据库技术的应用论文

更新字符串列表中,指定位置的字符串数据库教程

linux中清空Mysql数据库ROOT密码教程linux操作系统

SCI-E数据库中我国心血管系统研究论文的分析论文

sybase数据库中numeric数据类型字段出现跳号的问题

python中常用的各种数据库操作模块和连接实例

临时表在Oracle数据库与SQL Server数据库中的异同

浅谈知识管理在数据库课程教学活动中的应用论文

基于数据库的多媒体技术在建筑结构与识图教学中的应用探讨

《Informix/4GL数据库查寻中的翻屏编程技巧数据库(整理7篇).doc》
将本文的Word文档下载到电脑,方便收藏和打印
推荐度:
点击下载文档

文档为doc格式

最新推荐
猜你喜欢
点击下载本文文档