March 4, 2007
姓氏、染色体与传统文化
作者:eygle
出处:http://blog.eygle.com
昨天,看到有个"盖"姓朋友在我的网站留下了一个"盖氏家园"的链接,里面收集了很多关于"盖"这个姓的信息。
这让我想起了《中国国家地理杂志》第二期的卷首语:姓氏:不亚于“四大发明”的发明。
其中有这样一段文字:
......人有23对(46条)染色体,其中X和Y染色体是控制性别的。在男人的精子中,一半含有X,一半含有Y;女人的卵子含有的都是X,没有Y。当精子中的X遇到卵子中的X,组成新的染色体对XX时,就生女孩;当精子中的Y与卵子中的X相遇,组成XY时,一个男孩就诞生了。当这个男孩再生男孩时,一定是这个Y又一次地被选中,与一个卵子中的X结合了。除极个别情况外,如果一个家族一直有男孩诞生的话,那么这个家族的染色体Y就一直传下来了,而且是同一条祖先染色体的复制品。男孩是染色体Y的承载者,而人体其他的45条染色体在人类一代一代的繁殖过程中被反复地打乱重组,加之配偶的染色体不断地补充进来,从某种意义上讲,其实就是基因被逐渐地“稀释”。比如,你的女儿对你的基因,只继承了1/2,你的孙子、孙女只继承了你儿女基因的1/2,随着时间的推移,祖先的基因越来越少,最终近乎于无。但是除了少数的突变外,Y染色体躲过了被“稀释”的命运,它将随着这个家族的男性成员一直延续下去。
从Y染色体的承载来说,中国人重男轻女的传统还是有着朴素的科学依据的:D
对于姓氏的意义,作者提到了相当的高度:
我们的祖先...在五千多年前就用“姓”给自己的家族做了命名。当然,我们祖先这么做的时候,想到的不仅仅是标识自己,区别他人,很重要的是为了避免近亲繁殖。但是他们没想到的是,此举一下子给他们家族的染色体Y打上了标记。从某种意义上说,我们的“姓氏”,就是染色体Y的“姓”,因为生生死死,承载着姓的一代代的人都消失了,但染色体Y却与“姓”结合在一起,流传至今。姓的传递,就是Y染色体的传递。这真是人世与自然神奇的同构,是天人合一的典范。我甚至认为姓氏是我们中国人的一项伟大的发明,是一项不亚于四大发明的发明。
作者把已知的知识上升到了新的高度,颇有些新意。
从上面"盖氏家园"的网站上,找到了一些族人的家谱,从族谱的始祖看来,我们都有同一个祖先,始祖 演是盖氏家族的祖先:
始祖 演, 配潘氏,子一,政,居凤头村,葬庄西黄埠前
二世 政, 配潘氏、万氏,子七,长子[忠],葬[演]墓东
三世 忠, 配王氏,子一,世荣,葬[忠]墓东
四世 世荣,配孙氏、张氏,子二,志得、志友
五世 志得,配王氏,子二,腾秀、腾飞,葬[世荣]墓东
志友,配?氏,子二,腾花、腾万,居泊庄
盖姓始祖大约缘起于明朝洪武初年:
始祖盖公[演],自明朝洪武初年,兄弟三人由山西省小云南移民到山东。长兄在济南府,次兄在寿光县,本始祖[演]到齐东莱阳县。初居凤翥山阴,迨后所生日益繁衍,左右村落同源共流,根固枝繁叶茂。初始我祖形单影只,举目无亲,三世单传,仅之一线。然天佑我祖,至五世分二支,六世分四,七世竞分十六支。
只是不知道,始祖演的谱系还能否续接到其他的族谱上。
-The End-
Posted by eygle at 10:24 AM | Comments (14)
March 2, 2007
Oracle中如何快速的卸载和加载数据?
作者:eygle
出处:http://blog.eygle.com
前几天有个朋友在MSN上问,如何能更快速的从数据库中卸载和加载数据,他原来是用sql查询spool出来,效率很低。
这让我想起DCBA的一个工具ociuldr,这个工具是用C写成的,通过OCI和数据库交互,方便而且效率很高。
通过ociuldr转储的数据,可以很容易用sqlldr加载入数据库,两者结合使用,效果非凡。
我简单测试了一下,转储很简单:
D:\OraDoc\OracleTools\ociuldr>ociuldr user=scott/tiger@eygle2 query="select * from emp" field=# record=0x0a file=emp.txt
0 rows exported at 2007-02-27 15:47:48
14 rows exported at 2007-02-27 15:47:48
output file emp.txt closed at 14 rows.
创建好测试表:
D:\OraDoc\OracleTools\ociuldr>sqlplus scott/tiger@eygle2SQL*Plus: Release 10.2.0.1.0 - Production on 星期二 2月 27 15:53:40 2007
Copyright (c) 1982, 2005, Oracle. All rights reserved.
连接到:
Oracle9i Enterprise Edition Release 9.2.0.4.0 - Production
With the Partitioning option
JServer Release 9.2.0.4.0 - ProductionSQL> create table empt as select * from emp where 1=0;
表已创建。
编写简单的控制文件,通过sqlldr轻松加载入数据库:
D:\OraDoc\OracleTools\ociuldr>cat a.ctl
LOAD DATA
INFILE 'emp.txt'
INTO TABLE empt
APPEND
FIELDS TERMINATED BY '#' TRAILING NULLCOLS
(
EMPNO ,
ENAME CHAR ,
JOB CHAR ,
MGR ,
HIREDATE DATE ,
SAL ,
COMM ,
DEPTNO
)D:\OraDoc\OracleTools\ociuldr>sqlldr scott/tiger@eygle2 control=a.ctl
SQL*Loader: Release 10.2.0.1.0 - Production on 星期二 2月 27 16:01:24 2007
Copyright (c) 1982, 2005, Oracle. All rights reserved.
达到提交点 - 逻辑记录计数 14
D:\OraDoc\OracleTools\ociuldr>sqlplus scott/tiger@eygle2
SQL*Plus: Release 10.2.0.1.0 - Production on 星期二 2月 27 16:01:37 2007
Copyright (c) 1982, 2005, Oracle. All rights reserved.
连接到:
Oracle9i Enterprise Edition Release 9.2.0.4.0 - Production
With the Partitioning option
JServer Release 9.2.0.4.0 - ProductionSQL> set linesize 120
SQL> select * from empt;EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
---------- ---------- --------- ---------- -------------- ---------- ---------- ----------
7369 SMITH CLERK 7902 17-12月-80 800 20
7499 ALLEN SALESMAN 7698 20-2月 -81 1600 300 30
7521 WARD SALESMAN 7698 22-2月 -81 1250 500 30
7566 JONES MANAGER 7839 02-4月 -81 2975 20
7654 MARTIN SALESMAN 7698 28-9月 -81 1250 1400 30
7698 BLAKE MANAGER 7839 01-5月 -81 2850 30
7782 CLARK MANAGER 7839 09-6月 -81 2450 10
7788 SCOTT ANALYST 7566 19-4月 -87 3000 20
7839 KING PRESIDENT 17-11月-81 5000 10
7844 TURNER SALESMAN 7698 08-9月 -81 1500 0 30
7876 ADAMS CLERK 7788 23-5月 -87 1100 20
7900 JAMES CLERK 7698 03-12月-81 950 30
7902 FORD ANALYST 7566 03-12月-81 3000 20
7934 MILLER CLERK 7782 23-1月 -82 1300 10已选择14行。
SQL>
dcba说将在下一版增加自动控制文件生成的功能,那时候这个工具将会更加方便了。
-The End-
Posted by eygle at 10:20 AM | Comments (15)
