2007年07月06日

目录

1.导出数据时常用的脚本
2.Kill Session
3.Sqlldr:Message 2100 not found

 

导出数据时常用的脚本:

 

sql.sql
select a.name||’|'||a.sex||’|'||a.age from xxx a

run.sql

set heading off
set feedback off
set term off
set trims on
set newp none
set lin 255
spool data.dat
@sql.sql
spool off
exit

如果要使用dbms_output有效,需要设置下面的选项:
set serveroutput on

shell 命令:

nohup sqlplus logon/logon@database @run &

  

Kill Session

 

alert system kill session ‘SID,SERIAL#’;

  

Sqlldr:Message 2100 not found:

从Oracle服务器上拷贝了一个sqlldr过来,允许发现了这个错误:Message 2100 not found; No message file for product=RDBMS, facility=ULMessage 2100 not found; No message file for product=RDBMS, facility=UL…

 

这个主要是因为Oracle客户端没安装完整,缺少$ORACLE_HOME/rdbms/mesg/的文件,从Oracle服务器中拷贝过来chown或者chmod使得有权限读就解决了:)

 

 

 

 

 

2007年07月05日

批量修改文件名/执行字符串式命令:

ls | awk ‘{print "mv " $0 " " $0".dat"}’

2006年06月02日

    char  buf[MAX_PATH];
    memset(buf, 0, sizeof(buf));
    BROWSEINFO   bi;
    bi.hwndOwner = m_hWnd;  //set dialog owner
    bi.pidlRoot = NULL;
    bi.pszDisplayName = buf;
    bi.lpszTitle = "浏览目录";
    bi.ulFlags = 0;
    bi.lpfn = NULL;
    bi.lParam = 0;
    bi.iImage  = 0;
    LPITEMIDLIST  lp = SHBrowseForFolder(&bi);
    if(lp!=NULL)SHGetPathFromIDList(lp,buf);   //save filepath to buf[];

2006年05月30日

  到我死时,一切感觉都会停止,我会消失在一片混沌之中.我害怕毫无感觉,宁愿有一种感觉会永远存在.哪怕是疼.

2006年03月01日

引用:Fred

以下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 OFTWARE\ODBC\ODBCINST.INI\
中找到

ACCESS支持子查询

ACCESS支持外连接,但不包括完整外部联接,如支持
   LEFT JOIN 或 RIGHT JOIN
但不支持
   FULL OUTER JOIN 或 FULL JOIN

ACCESS中的日期查询
注意:ACCESS中的日期时间分隔符是#而不是引号
   Select * From Tab1 Where [Date]>#2002-1-1#;
在DELPHI中我这样用
   SQL.Add(Format(
       ’Select * From Tab1 Where [Date]>#%s#;’,
       [DateToStr(Date)]));

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


ACCESS的约束

在JET SQL参考中关于约束的内容不够详细,可以参考SQL Server的联机丛书

下面的SQL为a表的Name字段增加非空约束
ALTER TABLE a ADD CONSTRAINT a_checkname CHECK (Not [Name] is Null)
注意:每一个约束都是一个对象,都有一个名字

下面的语句把id列设置为主键
Alter Table [表] Add Primary Key (Id)
下面的语句把id列改为自动编号类型,并且设置为主键
Alter Table [表] Alter [id] Counter Constraint [表_p] Primary Key

添加复合主键
下面的SQL为tb_demo表添加复合主键(id,id2).
Alter Table tb_demo
Add Constraint tb_demo_pk
Primary Key (id,id2)

关键字

作用

关键字

作用

关键字

作用

absolute

指令 (变量)

abstract

指令 (方法)

and

运算符 (布尔)

array

类型

as

运算符 (RTTI)

asm

语句

assembler

向后兼容 (汇编)

at

语句 (异常处理)

automated

访问类别符 ()

begin

块标记

case

语句

cdecl

函数调用协定

class

类型

const

声明或指令(参数)

constructor

特殊方法

contains

运算符 (集合)

default

指令 (属性)

destructor

特殊方法

dispid

dispinterface 界面类别符

dispinterface

类型

div

运算符

do

语句

downto

语句 (for)

dynamic

指令 (方法)

else

语句 (if case)

end

块标记

except

语句 (异常处理)

export

向后兼容 ()

exports

声明

external

指令 (函数)

far

向后兼容 ()

file

类型

finalization

单元结构

finally

语句 (异常处理)

for

语句

forward

函数指令

function

声明

goto

语句

if

语句

implementation

单元结构

implements

指令 (属性)

in

运算符 (集合) – 工程结构

index

指令(dipinterface界面)

inherited

语句

initialization

单元结构

inline

向后兼容 ( asm)

interface

类型

is

运算符 (RTTI)

label

声明

library

程序结构

message

指令 (方法)

mod

运算符 (数学)

name

指令 (函数)

near

向后兼容 ()

nil

数值

nodefault

指令 (属性)

not

运算符 (布尔)

object

向后兼容 ()

of

语句 (case)

on

语句 (异常处理)

or

运算符 (布尔)

out

指令 (参数)

overload

函数指令

override

函数指令

package

程序结构 (控件包)

packed

指令 (记录)

pascal

函数调用协定

private

访问类别符 (class)

procedure

声明

program

程序结构

property

声明

protected

访问类别符 ()

public

访问类别符 ()

published

访问类别符 ()

raise

语句 (异常处理)

read

属性类别符

readonly

dispatch 界面类别符

record

类型

register

函数调用协定

reintroduce

函数指令

repeat

语句

requires

程序结构 (控件包)

resident

指令 (函数)

resourcestring

类型

safecall

函数调用协定

set

类型

shl

运算符 (数学)

shr

运算符 (数学)

stdcall

函数调用协定

stored

指令 (属性)

string

类型

then

语句 (if)

threadvar

声明

to

语句 (for)

try

语句 (异常处理)

type

声明

unit

单元结构

until

语句

uses

单元结构

var

声明

virtual

指令 (方法)

while

语句

with

语句

write

属性类别符

writeonly

dispatch 界面类别符

xor

运算符 (布尔)

 

 

 

 

 

 

 

 

2006年02月27日

       前几天心血来潮对ruijie supplicant的密码存放地址研究了一下,通过FileMon监视它的IO操作发现在试图上线时程序会在 windows/system32(或者winnt/system32)目录下修改SupplicantConfigur.ini文件,而且发现写入的长度跟我的密码长度相同。通过对密码的暴力破解,还是发现一些加密的规律,但是本人又懒得去研究它的算法,只好作罢,考虑到密码一般都是数字和小写字母构成,而暴力破解得到的映射表基本可用了,于是进入几台没设密码的机器(其他手段的攻击就算了),把他们的ini文件copy过来,通过映射表查得密码,上校园网的自助服务,登陆,成功!:)

建议锐捷提供更高级点的加密算法,就是根据不同机器产生密钥也行啊,起码能对付我这样的懒人了…

注:笔者所在的网络为锐捷提供的校园网解决方案

2006年01月05日

胜,不妄喜。败,不惶馁。胸有积雷而面如平湖着可拜上将军。安不奢逸,危不惊惧。胸有惊雷而面如平湖者,方为大将军

2005年12月21日

春秋战国时期:公元前770年-公元前221年 

  1:天行健,君子以自强不息。———《易经》 

  2:发奋忘食,乐以忘优,不知老之将至。———《论语》 

  3:三军可夺帅也,匹夫不可夺志也。———《论语》 

  4:修身、齐家、治国、平天下。———《大学》 

  5:富贵不能淫,贫贱不能移,威武不能屈。———《孟子》 

  6:生于忧患,死于安乐。———《孟子》 

  7:吾生也有涯,而知也无涯。———《庄子》 

  8:路漫漫其修远兮,吾将上下而求索。———屈原《离骚》 

  9:亦余心之所善兮,虽九死其犹未悔。———屈原《离骚》 

  10:不鸣则已,一鸣惊人。——《史记。滑稽列传》 

秦汉时期:公元前221年-公元220年 

  11:燕雀安知鸿鹄之志?———《史记。陈涉世家》 

  12:一屋不扫何以扫天下?———《后汉书。陈蕃传》 

  13:有志者,事竟成。———《后汉书。耿弇传》 

  14:精诚所至,金石为开。———《后汉书。广陵思王荆传》 

  15:少壮不努力,老大徒伤悲。———《汉乐府。长歌行》 

魏晋南北朝:公元220年-公元581年 

  16:老骥伏枥,志在千里;烈士暮年,壮心不已。———曹操《龟虽寿》 

  17:捐躯赴国难,视死忽如归。———曹植《白马篇》 

  18:鞠躬尽瘁,死而后已。———诸葛亮《后出师表》 

  19:宁为玉碎,不为瓦全。———《北齐书。元景安传》 

       20:天生我材必有用。———李白《将进酒》 

  21:天变不足畏,祖宗不足法,人言不足恤。———王安石 

  22:生当作人杰,死亦为鬼雄。———李清照《夏日绝句》 

  23:位卑未敢忘忧国。———陆游《病起书怀》 

元明清:公元1271年-公元1840年

  24:人生自古谁无死,留取丹心照汗青。———文天祥《过零丁洋》 

  25:风声雨声读书声声声入耳,家事国事天下事事事关心。———顾宪成 

  26:明日复明日,明日何其多?我生待明日,万事成蹉跎。———《明日歌》 

  27:天下兴亡,匹夫有责。———顾炎武 

  28:千磨万击还坚劲,任尔东西南北风。———郑板桥《竹石》 

  29:海纳百川,有容乃大;壁立千仞,无欲则刚。———郑板桥《对联》

2005年12月13日

DOS:

1.copy con yourfilename

完了按ctrl+z回车退出。注意如果按ctrl+c会删除文件

2.echo echostring yourfilename 或 echo yourfilename

Linux:

touch yourfilename

如果文件不存在该命令会创建一个新文件,如果文件存在则仅仅是更新文件的最新更改时间而已