*****************************************第一部分, 在一台服务器构建多mysql 服务.*****************************************
一,绪言在Mysql中有一mysqld_multi命令,可用于在一台物理服务器运行多个Mysql服务,今天参考一些文档,亲自测试并通过,真高兴,现将操作过程共享给大家!操作系统:Linux 2.6.13 (Slackware),其它版的Linux应该也差不多.数据库:Mysql 4.0.17 源程序安装(相信最新的5.1.*也差不多,过些天再试试)规划:运行4个mysql服务:假设服务器名:db-app (IP为192.168.0.100),假设服务器名:db-app2 (IP为192.168.0.101),下文直到第二部分,均为讲述db-app中的mysql,
二,准备用mysql源程序安装,假设在安装时用的configura选择项氯?
./configure --prefix=/usr/local/mysql --datadir=/usr/local/mysql/data1 --sysconfdir=/etc备注:--prefix将MYSQL安装到/usr/local/mysql, --datadir将数据库生成/usr/local/mysql/data1sysconfdir是指..
[] []
天Mysql的主从数据库没有同步导致网页读不到数据,
当网页不能读到数据时,猜想上数据库的原因。
首先在Master上用
show processlist; 查看下进程是否Sleep太多。发现很正常。
show master status; 也正常。
再跑到Slave上查看
show slave status;
错误提示:
Error 'Duplicate entry '1' for key 1' on query. Default database: 'movivi1'. Query: 'INSERT INTO `v1vid0_user_samename` VALUES(null,1,'123','11','4545','123')'
Slave_SQL_Running 为 NO
Seconds_Behind_Master 为 (null)
可见是Slave不同步
解决:
stop slave;
set global sql_slave_skip_counter =1 ;start slave;
之后Slave会和Master去同步 主要看Seconds_Behind_Master是否为0,直到为0时就已经同步了。。
[] []
本文介绍一下在solaris 10下安装使用MySQL + Apache + php
>安装MySQL如果安装Solaris 10时候,选择了完全安装,那就已经安装好了MySQL。如果没有安装的话,我们可以通过pkgadd命令安装,软件包是:SUNWmysqlr SUNWmysqlt SUNWmysqlu。这三个软件包含在Solaris 10安装光盘中。都>配置MySQL在使用MySQL之前,我们还需要做一些配置。#/usr/sfw/bin/mysql_install_db 初始化数据库为MySQL创建用户和组#groupadd mysql#useradd -g mysql mysql#chgrp -R mysql /var/mysql#chmod -R 770 /var/mysql将新建目录添加到软件包安装纪录中。#installf SUNWmysqlr /var/mysql d 770 root mysql配置mysql服务进程的配置文件,我们这里使用mysql提供的一个默认配置文件my-medium.cnf#cp /usr/sfw/share/mysql/my-medium.cnf /var/mysql/my.cnf好了启动mysql#/etc/sfw/mysql/mysql.server start关闭mysql#/usr/sfw/bin/mysqladmin shutdown由于Solaris 10引入了SMF功..
[] []
解决办法:修改 ''c:/windows/php.ini'' 查找php_mysql.dll 将前面的注释符'';''去掉
然后将 ''php安装目录/libmysql.dll'' 和 ''php安装目录/ext/php_mysql.dll'' 复制到 ''c:/windows/system32/'' 下 重启apache即可
另外,当你再次打开phpmyadmin时,可能会提示:
----------------------------------------------
没有发现 PHP 的扩展设置mbstring, 而当前系统好像在使用宽字符集。没有 mbstring 扩展的 phpMyAdmin 不能正确识别字符串,可能产生不可意料的结果.----------------------------------------------
解决办法,修改 ''c:/windows/php.ini'' 查找extension=php_mbstring.dll 去掉前面的'';''注释符,保存。然后将 ''php安装目录/ext/php_mbstring.dll''拷贝到 ''c:/windows/system32'' 下, 重启apache即可
[] []
在数据库的应用开发中,常常会遇到性能和代价的之间矛盾。以作者在开发股市行情查询和交易系统中遇到的问题为例,要在实时记录1000多只股票每分钟更新一次的行情数据的同时,响应大量并发用户的数据查询请求。考虑到性价比和易维护性,系统又要求在基于PC服务器,Windows NT平台的软硬件环境下实现。开始,我们采用了MS SQL Server 6.5 作为数据库系统,用Visual C++ 6.0开发了访问数据库的前端,应用ODBC数据接口,在进行了大量的数据库配置和程序优化后,发现仍不能满足性能要求。后采用SQL Server的DB-Library接口,绕过了ODBC解释层,可以每秒更新行情数据30次,同时支持20-30个左右的并发用户进行行情查询,基本满足要求(单台PC服务器,单PII350 CPU,内存128M,SCSI硬盘)。有没有可能进一步提高系统的性能和负载能力呢?经过分析,数据库服务器是系统的瓶颈。当然,可以采用UNIX服务器+大型数据库的系统平台,但其开发、运行、维护的费用比微机+Wi..
[] []
看到很多文章都说Redhat7.0带的glibc有问题,装不上Oracle。后来又听说换个glibc的版本就可以,于是就想安装上用一用。有人说想安装Oracle,至少需要256M内存,还要修改共享内存大小,重新编译内核,创建4个mount点等,我都没有做,也安装上了(也可能只能用来学习,干不了什么大事)。下面的步骤忠实记录了整个安装过程。
1.机器配置
CPU: Intel Pentium III 668203 khz 内存: 128M 操作系统: Redhat7.0(完全安装) SWAP区: 256M 安装shell: bash
2.安装所需软件
Oracle8161_tar.gz(275M,文件较大,下载前做好心理准备,我第一次花了一整天弄下来却是个坏的,展不开,差点气死!只好又下载了一次,还不如去买张盗版光盘呢)。下载网址: (清华酒井)
glibc2.1版本(GNU C Library,18M)下载地址: 下载后都放到了/backup目录
3.安装glibc 2.1包 RedHat7.0安装的是glibc2.2。Oracle 8I不能使用glibc 2.2进行编译,而需要glibc2.1的SDK..
[] []
原本用FSO读取模板文件代码:复制代码 Set fso = Server.CreateObject(''Scripting.FileSystemObject'') 建立FSO对象 Set fo = fso.OpenTextFile(Cssurl&''style.css'',1,true,0) c= fo.ReadAll fo.Closeresponse.write c结果在读取utf-8格式的css文本文件时,碰到中文居然显示乱码,所以必须要找个替代方法了。于是,上了蓝色经典。还好有青蛙提醒:http://www.blueidea.com/bbs/NewsDetail.asp?lp=1&id=2578196于是换用ADODB.Stream操作。复制代码 Function LoadFile(ByVal File) Dim objStream On Error Resume Next Set objStream = Server.CreateObject(''ADODB.Stream'') With objStream .Type = 2 .Mode = 3 .Open .LoadFromFile Server.MapPath(File) If Err.Number<>0 Then Response.Write ''出错,文件不存在'' Err.Clear Response.End End If .Charset = ..
[] []
文章是一个朋友[齐凡]写的,没经他允许就发出来希望他看到不回生气呵呵~!代码我也不整理了,自己看吧~!
前台做脚本 function show(obj) { document.getElementById (''name'').innerText=obj; document.getElementById (''name'').style.top =event.screenY-10; document.getElementById (''name'').style.left =event.screenX-10; document.getElementById (''name'').style.display =''block''; } function hitee() { document.getElementById (''name'').style.display =''none''; } 后台在ItemDataBound事件上绑定脚本if(e.Item.ItemType ==ListItemType.Item || e.Item.ItemType ==ListItemType.AlternatingItem ) {e.Item.Attributes.Add(''onmousemove'',''show(\''要在面板上动态显示的信息\'');''); e.Item.Attributes.Add(''onmouseout'',''hitee();'');} 还有一个面板(放信息之用)<div id=''name'' style='' DISPLAY: none; Z-INDEX: ..
[] []
网络大本营
1.XML文件<?xml version=''1.0'' encoding=''GB2312'' ?> <!-- 个人履历表--> <resume><person id=''01''> <name>张三</name> <birthday>03/24/1975</birthday> <phone>1111-1111</phone> <address>大连</address></person> <person id=''02''> <name>李四</name> <birthday>9/26/1978</birthday> <phone>2222-2222</phone> <address>南京</address></person> <person id=''03''> <name>王五</name> <birthday>11/09/1979</birthday> <phone>3333-3333</phone> <address>武汉</address></person> <person id=''04''> <name>赵六</name> <birthday>6/04/1973&..
[] []
/** * 去掉所有的HTML标记和JavaScript标记 */function replaceHtmlAndJs($document){ $document = trim($document); if (strlen($document) <= 0) { return $document; } $search = array ('''<script[^>]*?>.*?</script>'si'', // 去掉 javascript '''<[\/\!]*?[^<>]*?>'si'', // 去掉 HTML 标记 '''([\r\n])[\s]+''', // 去掉空白字符 '''&(quot|#34);'i'', // 替换 HTML 实体 '''&(amp|#38);'i'', '''&(lt|#60);'i'', '''&(gt|#62);'i'', '''&(nbsp|#160);'i'' ); // 作为 PHP 代码运行 $replace = array ('''', '''', ''\1'', ''\'''', ''&'', ''<'', ''>'', '' '' ); return @preg_replace ($search, $replac..
[] []
网络大本营
<?phpfunction download($file_source, $file_target) { $rh = fopen($file_source, 'rb'); $wh = fopen($file_target, 'wb'); if ($rh===false || $wh===false) {// error reading or opening file return true; } while (!feof($rh)) { if (fwrite($wh, fread($rh, 1024)) === FALSE) { // 'Download error: Cannot write to file ('.$file_target.')'; return true; } } fclose($rh); fclose($wh); // No error return false; }?>
[] []
在不支持事务处理的PHP版本中,可以用如下方法来进行事务处理:在dbstuff类中添加一个属性和两个方法:var istrans;//判断是否进行事务处理的。function inittrans(){//当要开启一个事务时,要先设置此项,说明是要进行事务处理 $this->istrans = 1; } function resettrans(){//当完成一个事务时,要重置此项防止在没有进行事务处理的时候,执行语句出错不能进行提示 $this->istrans = 0; }在出错处理的方法加入:function halt($message = '', $sql = '') { $this->error = 1; if($this->istrans == 1) $this->query(''ROLLBACK TRANSACTION'');//出错则回滚 require 'db_mssql_error.php'; }示例:$db->inittrans();$db->query(''BEGIN TRANSACTION'');//SQL语句$db->query(''COMMIT TRANSACTION'');$db->resettrans();经测试,可以正常使用。
[] []
实现业务系统中的用户权限管理--设计篇 B/S系统中的权限比C/S中的更显的重要,C/S系统因为具有特殊的客户端,所以访问用户的权限检测可以通过客户端实现或通过客户端+服务器检测实现,而B/S中,浏览器是每一台计算机都已具备的,如果不建立一个完整的权限检测,那么一个“非法用户”很可能就能通过浏览器轻易访问到B/S系统中的所有功能。因此B/S业务系统都需要有一个或多个权限系统来实现访问权限检测,让经过授权的用户可以正常合法的使用已授权功能,而对那些未经授权的“非法用户”将会将他们彻底的“拒之门外”。下面就让我们一起了解一下如何设计可以满足大部分B/S系统中对用户功能权限控制的权限系统。需求陈述不同职责的人员,对于系统操作的权限应该是不同的。优秀的业务系统,这是最基本的功能。可以对“组”进行权限分配。对于一个大企业的业务系统来说,如果要求管理员为其下员工逐一分配系统操作权限的话,是件耗时且不够方便的事情。所以,系..
[] []
ssshowModalDialog和showModelessDialog使用心得一、showModalDialog和showModelessDialog有什么不同? showModalDialog:被打开后就会始终保持输入焦点。除非对话框被关闭,否则用户无法切换到主窗口。类似alert的运行效果。 showModelessDialog:被打开后,用户可以随机切换输入焦点。对主窗口没有任何影响(最多是被挡住一下而以。:P)二、怎样才让在showModalDialog和showModelessDialog的超连接不弹出新窗口? 在被打开的网页里加上<base target=''_self''>就可以了。这句话一般是放在<html>和<body>之间的。三、怎样才刷新showModalDialog和showModelessDialog里的内容? 在showModalDialog和showModelessDialog里是不能按F5刷新的,又不能弹出菜单。这个只能依靠javascript了,以下是相关代码:<body onkeydown=''if (event.keyCode==116){reload.click()}''><a id=''reload'' href=''filename.htm'' style=''di..
[] []
来自
<?/* Name: ToExcel Author: Riyao Chen Version: 0.0.1 Date: 2006-05-15 License: GPL*/
/****************************************//This class is to change data from query to excel file//SQL FORMAT: SELECT c_id,c_title,c_subject FROM news_content WHERE c_parid=0 ORDER BY c_date desc,c_clicks desc//The DataBase connection is open outside;//Parameter:$sql,The query sentence ;$database,which database***********************************/class ToExcel{ var $sql=''''; var $fields;
var $db; function ToExcel($sql,$database) { if($sql == '''') return $this->errorMessage(''NO QUERY SENTENCE!'');
$this->db = $database; //Get Table Name $tmp=ereg_replace(''SELECT.+FROM '','''',$sql); $tmp=ereg_replace(''ORDER BY.+'','''',$tmp); $this->table = ereg_repl..
[] []
最近搞mysql,这两天想用C把二进制文件(<64k,大的就存储路径了)存储到数据库里,经过我‘不懈’的搜索,发现NET上有且只有一个版本(php为例的),在C里根本行不通,我先是晕倒,醒了后我再搜索,还是php版本的,我又吐了一口血(之后又吐了好几次)!最后还是在mysql手册里找到了方向,是mysql_real_escape_string给了我光明,好了,不罗嗦了,不然要有矿泉水瓶砸过来了!为了不让其它初学者吐血,我把我的code共享一下,希望大侠们指正,也欢迎鸡蛋和西红柿
CODE:[Copy to clipboard]#include <stdio.h>#include <mysql/mysql.h>#include <stdlib.h>#include <sys/types.h>#include <sys/stat.h>#include <fcntl.h>
#define host ''localhost'' //mysql server#define username ''root''#define password ''cipher''#define database ''www'' int get_fi..
[] []
Page_Load()中IsPostBack用法浅析
--------(自己的一点浅论,仅供参考')
Page_Load(){ // some codes:code1 ...... If(!IsPostBack) { // some codes:code2 ...... } //some codes:code3 ...... }
IsPostBack中保存的是一个值,该值指示该页面是否正被首次加载或访问.在页面首次加载或访问时, IsPostBack的值默认为false,因此code2将执行,这时IsPostBack的值变为true.在该页面未被关闭前进行的需要执行Page_Load()操作时(例如刷新页面),将只执行code1和code3,code2就不再执行了.
因此:对于只需要执行一次的一些页面上的设置或其它,可以放在code2的位置,可以加快系统速度.
[] []
以表table为例, 表table中只有一个字段a
1) 找出重复记录
select a from table group by a having count(*) > 1
2) 删除重复记录
delete from table A where A.rowid < (select max(B.rowid) from table B where A.a = B.a)
[] []
浏览统计: total: 24 year: 24 quarter: 24 month: 24 week: 19 today: 1 Bit 1位,值为0或1 Int Integer 4字节,值为-2^31~2^31-1 Smallint 2字节,值为-2^15~2^15-1 Tinyint 1字节,值为0~255 Decimal (p,s) 数字数据,固定精度为P,宽度为S Numeric Money 8字节,存放货币类型,值为-2^63~2^63-1 Small money 4字节,存放货币类型,值为-214748.3648~+214748.3647近似数值数据类型 Float (n) N在1~24之间,4字节,7位精度 N=1~7为real N在25~53之间,8字节,15位精度 =8~15为float Datetime 8字节,描述某天的日期和时刻,值的精确度为1/300秒 Smalldatetime 4字节,描述某天的日期和时刻,精度为分钟 Cursor 对游标的引用 Timestamp 8字节,存放在数据库内唯一的数据 Uniqueidentifier 16字节,存放全局唯一标识(GUID) Char (n) 非unicode字符串的固定长度,n=1~8000 Character (n) Varchar (n) 可变长度,非unicode字符串n=1~8000 Char varying(n) Tex..
[] []
用root用户启动远程服务一直是安全大忌,因为如果服务程序出现问题,远程攻击者极有可能获得主机的完全控制权。MySQL从3.23.15版 本开始时作了小小的改动,默认安装后服务要用mysql用户来启动,不允许root用户启动。如果非要用root用户来启动,必须加上--user=root
的参数(./safe_mysqld --user=root &)。因为MySQL中有LOAD DATA INFILE和SELECT ... INTO OUTFILE的SQL语句,如果是root用户启动了
MySQL服务器,那么,数据库用户就拥有了root用户的写权限。不过MySQL还是做了一些限制的,比如LOAD DATA INFILE只能读全局可读的文件
,SELECT ... INTO OUTFILE不能覆盖已经存在的文件。
本地的日志文件也不能忽视,包括shell的日志和MySQL自己的日志。有些用户在本地登陆或备份数据库的时候为了图方便,有时会在命令行参
数里直接带了数据库的密码,如:
shell>/usr/local/mysql/bin/mysqldump -uroot -ptest test>test.sql shell>/usr/l..
[] []
1. 什么是参照完整性?——————–参照完整性(完整性约束)是数据库设计中的一个重要概念,当数据库中的一个表与一个或多个表进行关联时都会涉及到参照完整性。比如下面这个例子:文章分类表 - categoriescategory_id name1 SQL Server2 Oracle3 PostgreSQL5 SQLite
文章表 - articlesarticle_id category_id title1 1 aa2 2 bb3 4 cc
可见以上两个表之间是通过category_id,其中categories表有4条记录,articles表有3条记录。
然而可能因为某种原因我们删掉了categories 表中category_id=4的记录,而articles表却还是有一条category_id=4的记录,很明显,category_id=4的这条记录不应该存在在articles表中,这样会很容易造成数据错乱。
相反,外键关系(Foreign Key relationships)讨论的..
[] []
为了便于自己的开发,但是又不想使用ADODB、PEAR::DB这样的庞然大物,就在PHPLib DB类的基础上、参考PEAR::DB类,封装了自己的DB类,简单好使,非常方便。目前只针对MySQL有效,没什么技术含量,姑且为参考。
使用本类库只是需要把下面代码保存为database.inc.php或者database.class.php,在自己需要的地方include进来,然后实例化对象,然后调用连接方法,最后在执行操作。
[ 连接数据库 ]
//包含数据库处理类文件include_once(''database.inc.php'');
//本地数据库配置define(''DB_HOST'', ''localhost''); //数据库服务器define(''DB_USER_NAME'', ''root''); //数据库用户名define(''DB_USER_PASS'', ''''); //密码define(''DB_DATABASE'', ''test''); //数据库
//连接本地数据库$db = new DB_Sql();$db->connect(DB_DATABASE, DB_HOST, DB_USER_NAME, DB_USER_PASS);
[ 使用方法 ]
//获取所有记录$sql = ''SELECT * FROM..
[] []
有很多朋友虽然安装好了mysql但却不知如何使用它。在这篇文章中我们就从连接MYSQL、修改密码、增加用户等方面来学习一些MYSQL的常用命令。
一、连接MYSQL
格式: mysql -h主机地址 -u用户名 -p用户密码
1、例1:连接到本机上的MYSQL。
首先在打开DOS窗口,然后进入目录 mysqlbin,再键入命令mysql -uroot -p,回车后提示你输密码,如果刚安装好MYSQL,超级用户root是没有密码的,故直接回车即可进入到MYSQL中了,MYSQL的提示符是:mysql>
2、例2:连接到远程主机上的MYSQL。假设远程主机的IP为:110.110.110.110,用户名为root,密码为abcd123。则键入以下命令:mysql -h110.110.110.110 -uroot -pabcd123(注:u与root可以不用加空格,其它也一样)
3、退出MYSQL命令: exit (回车)
二、修改密码
格式:mysqladmin -u用户名 -p旧密码 password 新密码
1、例1:给root加个密码ab12。首先在DOS下进入目录mysqlbin,然后键入以下命令mysqladmin -u..
[] []
写可复用的C/C++代码
在现有软件的新版本开发的过程中,老板最希望看到的是能够在最大限度复用现有代码的情况下扩展软件功能从而满足新的需求。软件架构从框架上决定了代码复用的程度。只有设计良好的应用框架,才可能最大限度的保证代码的复用;对于面向对象方法而言,类设计对于代码复用的重要性自然不必说了。本文试图从软件设计的角度来考察代码级的复用问题。
保证软件可服用的一个最高原则,也是最简单的办法,就是从架构、模块、类等层次上采用各种设计模式达到各自层次上的低耦合的目的。
框架要反映出问题的真实面目
开发软件的终极目的是为了解决实际应用问题,应用框架是应用逻辑的高度抽象,从不同的视角观察应用问题,会得到不同的解决方案,从而得到不同的抽象结果,也就是不同的应用框架。正因为应用框架只是应用问题从某个视角”观察出来”的一个抽象,因此,它不可避免的与应用问题存在或多或少的的冲突,这些不一致的地方最终会为软..
[] []
很早以前在某大学BBS上下载的。刚才整理文件,又看到它了。贴上去,大家共享。刚接触VC编程的朋友往往对许多数据类型的转换感到迷惑不解,本文将介绍一些常用数据类型的使用。我们先定义一些常见类型变量借以说明
int i = 100;long l = 2001;float f=300.2;double d=12345.119;char username=''程佩君'';char temp[200];char *buf;CString str;_variant_t v1;_bstr_t v2;
一、其它数据类型转换为字符串
短整型(int)itoa(i,temp,10);///将i转换为字符串放入temp中,最后一个数字表示十进制itoa(i,temp,2); ///按二进制方式转换 长整型(long)ltoa(l,temp,10); 浮点数(float,double)用fcvt可以完成转换,这是MSDN中的例子:int decimal, sign; char *buffer; double source = 3.1415926535; buffer = _fcvt( source, 7, &decimal, &sign ); 运行结果:source: 3.1415926535 buffer: '31415927' decimal: 1 sign: 0decimal表示小数点的位置,sign表示符号:0..
[] []
网络大本营
有时候我需要查看已经部署到服务器上的应用程序的日志,每次都要远程登录服务器感觉很麻烦,所以一般我会把log文件的目录用apache做个网站,这样通过IE就可以访问到了。但是有时要看即时输出情况,就要不断的F5,很麻烦。所以就有个想法,不如用DWR2.0的反转Ajax来做个程序,让日志有变化时自动的发送到客户端,这样就我一个劲的按F5了。我下面就把这个程序分享给大家,希望大家提提意见。首先是环境:DWR 2.0.rc1Sun JDK 1.5先看张运行起来的图吧,大家一看就知道这是个什么东西了。500)this.width=500'' border=0>你可以制定要监视的log文件,当然有哪些文件文件可以被监视,你必须在服务端的xml配置中文件设置,当然你也可以监视一个目录里的log文件,这对于而 log文件是每天生成一个的情况很有用。你可以设定在浏览器上显示的行数,操作行数,屏幕会自动滚动。你还可以添加一些过滤器,过滤掉不想看见的行,我目前只做了到了过滤掉一些信息,..
[] []
C代码
#include <windows.h>#include <stdio.h>
#pragma comment(lib, ''user32.lib'');#pragma comment(lib, ''kernel32.lib'');
const UINT uSectorSize = 512 ;const UINT uBegSector = 0 ;const UINT uSectorNum = 1 ;
const UINT uReadSize = uSectorSize * uSectorNum ;
BYTE bBuffer[uReadSize] = {0} ;const char pDiskPath = ''\\.\PHYSICALDRIVE0'' ;
void ShowByteInform ( PBYTE pBuf, UINT uSize ){ for ( UINT i = 1 ; i <= uSize; i++ ) { printf ( '' %02X'', pBuf[i-1] ) ; if ( i % 16 == 0 ) printf ( '' '' ) ; else if ( i % 8 == 0 ) printf ( '' '' ) ; }}
int main(){ HANDLE hDisk ; __try { hDisk = CreateFile ( pDiskPath, GENERIC_READ, FILE_SHARE_READ|FILE_SHARE_WRITE, NULL, OPEN_EXISTING, 0, 0 ) ; if ( hDisk == INVALID_HANDLE_VALUE ) { ..
[] []
Mysql与Oracle、MS SqlServer限制查询所返回的行数的SQL语句都不同
Oracle :
要显示CARD_PLAN表中的前10条数据,SQL语句是(用ROWNUM关键字做修饰):
select * from CARD_PLAN where ROWNUM < 11;
MS SQLserver:
要显示CARD_PLAN表中的前10条数据,SQL语句是(用top关键字做修饰):
select top 10 * from CARD_PLAN ;
而MySQL的SQL语句是(用LIMIT关键字做修饰):
select * from CARD_PLAN LIMIT 0,10;
-------------------------------------------------------------------------------------------------
积累平时工作中的点点滴滴,总结一下,放在这里,可能对更多的人有点帮助。
网络大本营
[] []
如果一张表的数据达到上百万条,用游标的方法来删除简直是个噩梦,因为它会执行相当长的一段时间……
开发人员的噩梦——删除重复记录
想必每一位开发人员都有过类似的经历,在对数据库进行查询或统计的时候不时地会碰到由于表中存在重复的记录而导致查询和统计结果不准确。解决该问题的办法就是将这些重复的记录删除,只保留其中的一条。
在SQL Server中除了对拥有十几条记录的表进行人工删除外,实现删除重复记录一般都是写一段代码,用游标的方法一行一行检查,删除重复的记录。因为这种方法需要对整个表进行遍历,所以对于表中的记录数不是很大的时候还是可行的,如果一张表的数据达到上百万条,用游标的方法来删除简直是个噩梦,因为它会执行相当长的一段时间。
四板斧——轻松消除重复记录
殊不知在SQL Server中有一种更为简单的方法,它不需要用游标,只要写一句简单插入语句就能实现删除重复记录的功能。为了能清楚地..
[] []
导入导出的dmp文件时出现如下错误经由常规路径导出由EXPORT:V09.02.00创建的文件....IMP-00017: 由于 ORACLE 的 922 错误,以下的语句失败IMP-00003: 遇到 ORACLE 错误 922ORA-00922: 缺少或无效选项IMP-00017: 由于 ORACLE 的 922 错误,以下的语句失败
再次用indexfile参数导入文件得到对象创建语句,贴到sqlplus中执行发现是nocompress这个参数的问题,根源是版本问题,导出数据服务器和客户端的版本都是9.2,导入数据服务器和客户端的版本都是9.0,不过已经不可能再用9.0的客户端去导数据了。所以只能用这个dmp文件。开始想到的是修改indexfile选项导出的sql文件,创建表结构,可以完成。但是再次导入dmp文件发现还是无法继续进行。这样只能更改dmp文件了,用ultraedit32打开dmp文件,定位nocompress字符,把这些字符全部改成空格,空格的ascii码是32,16进制就是20,也就是把nocompress所包含的字符全部改成20即可。重新导入dmp文件,成功。不过编辑dmp..
[] []
[] [] [] [] [] [] []
[] [] [] [] []
版权所有 2006-2008 保留所有权利 湘ICP备06008262号