• 数据库转换小记

    作者:  • 2009 年 11 月 26 日 • 技术主义 • 暂无评论

    1. mysql_connect()和mysql_pconnect()的区别?
    mysql_connect()是普通连接,mysql_pconnect()是永久连接,mysql_connect()在执行完代码后自动关闭连接,而mysql_pconnect()不会。
    而针对postgreSQL,其永久链连接的函数为pg_pconnect。

    关于链接字符串,可以参考 http://docs.php.net/manual/zh/function.pg-connect.php, 注意,旧的多参数语法 $conn = pg_connect(“host”, “port”, “options”, “tty”, “dbname”) 已经不提倡使用,但是依然可以使用。

    2. PostgreSQL 里面不需要进行类似于MySQL中的mysql_select_db操作。

    3. MYSQL_ASSOC?
    mysql_fetch_array() 中可选的第二个参数 result_type 是一个常量,可以接受以下值:MYSQL_ASSOC,MYSQL_NUM 和 MYSQL_BOTH。本特性是 PHP 3.0.7 起新加的。本参数的默认值是 MYSQL_BOTH。 如果用了 MYSQL_BOTH,将得到一个同时包含关联和数字索引的数组。用 MYSQL_ASSOC 只得到关联索引(如同 mysql_fetch_assoc() 那样),用 MYSQL_NUM 只得到数字索引(如同 mysql_fetch_row() 那样)。
    而针对postgreSQL也有pg_fetch_array()函数,返回一个与所提取的行(元组/记录)相一致的数组。如果没有更多行可供提取,则返回 FALSE。 result_type 是可选参数,控制着怎样初始化返回值。result_type 是一个常量,可以有以下取值:PGSQL_ASSOC,PGSQL_NUM 和 PGSQL_BOTH。取值为 PGSQL_ASSOC 时 pg_fetch_array() 返回用字段名作为键值索引的关联数组,取值为 PGSQL_NUM 时用字段编号作为键值,取值为 PGSQL_BOTH 时则同时用两者作为键值。默认值是 PGSQL_BOTH.

    4. php操作mysql数据库,可以使用mysql_unbuffered_query. 但是操作postgresql无相关的函数,如何替换?

    mysql_unbuffered_query这个函数可到这里看说明。 http://php.liukang.com/manual/zh/function.mysql-unbuffered-query.php
    php对postgresql操作好像没有这样的函数,但可以用postgresql的游标达到目标。参考 http://www.pgsqldb.org/pgsqldoc-8.1c/sql-declare.html

    如果没有声明 WITH HOLD,那么这个命令创建的游标只能在当前事务中使用。使用 BEGIN, COMMIT 和 ROLLBACK 定义一个事务块。

    如果声明了 WITH HOLD,并且创建该游标的事务成功提交, 那么游标还可以在同一会话随后的事务里访问。(但如果创建它的事务回滚,那么游标被删除。) 带着 WITH HOLD 创建的游标是用一个明确的 CLOSE 命令,或者是会话终止来关闭的。 在目前的实现里,由一个游标代表的行是被拷贝到一个临时文件或者内存区里的,这样他们就仍然可以在随后的事务中被访问。

    在定义一个要用来向后抓取的游标的时候,我们应该声明 SCROLL 选项。 这个是 SQL 标准要求的。不过,为了和早期的版本兼容, PostgreSQL 在没有 SCROLL 的时候也允许向后抓取, 只要游标的查询计划简单得不需要额外的开销就可以支持它。 不过,我们建议应用开发人员不要依赖于使用没有带着 SCROLL 定义的游标的后向查找功能。如果声明了 NO SCROLL,那么不管怎样都会禁止向后抓取的功能。

    在 SQL 标准中游标只能在嵌入 SQLESQL) 的应用中使用。 PostgreSQL 服务器没有一个明确的 OPEN 语句;一个游标被认为在定义时就已经打开了。 不过,PostgreSQL嵌入的 SQL 预编译器, ecpg, 支持 SQL92 习惯,包括那些和DECLAREOPEN相关的语句。

    5. Full text index

    MySQL comes with full-text search, but can only be run on the MyISAM storage engine. [12]

    A 3rd party add-on to MySQL, Sphinx Fulltext Search Engine allows it to support full-text searches of InnoDB tables.

    PostgreSQL 8.2 has full text search in the tsearch2 module.

    PostgreSQL 8.3 integrates tsearch2 into the core: “TSearch2, our cutting-edge full text search tool, has been fully integrated into the core code, and also has a cleaner API.” [13]

    参考http://blog.chinaunix.net/u/11565/showart_1848766.html 进行tsearch2支持的全文搜索.

    6. && –> AND

    相关文章:

    关于

    生于古城長安,求學金陵,輾轉赴美深造,現漂泊於長安與北京。

    http://www.yenching.org