版本号--V2.17

更新日期:2019-11-13

5、PHP程序开发

5.1、连接数据库

<?php     
$host="172.16.0.29";
$port="15432";
$dbname="postgres";
$user="tbase" ;
$password="";  

//连接数据库
$conn=@pg_connect("host=$host port=$port dbname=$dbname user=$user password=$password");      
if (!$conn){
    $error_msg=@pg_errormessage($conn); 
    echo "连接数据库出错,详情:".$error_msg."\n<BR>"; ;
    exit;
}else{
    echo "连接数据库成功"."\n<BR>";      
} 
//关闭连接
pg_close($conn);
?>

执行
[root@VM_0_47_centos test]# curl http://127.0.0.1:8080/dbsta/test/conn.php
连接数据库成功

5.2、创建数据表

<?php     
$host="172.16.0.29";
$port="15432";
$dbname="postgres";
$user="tbase" ;
$password="";  

//连接数据库
$conn=@pg_connect("host=$host port=$port dbname=$dbname user=$user password=$password");      
if (!$conn){
$error_msg=@pg_errormessage($conn); 
echo "连接数据库出错,详情:".$error_msg."\n"; ;
exit;
}else{
echo "连接数据库成功"."\n";      
} 

//建立数据表
$sql="create table public.tbase(id integer,nickname varchar(100)) distribute by shard(id) to group default_group;";
$result = @pg_exec($conn,$sql) ;
if (!$result){
$error_msg=@pg_errormessage($conn); 
echo "创建数据表出错,详情:".$error_msg."\n"; ;
exit;
}else{
echo "创建数据表成功"."\n";       
}
//关闭连接
pg_close($conn);
?>

执行

[root@VM_0_47_centos test]# curl http://127.0.0.1:8080/dbsta/test/createtable.php
连接数据库成功
创建数据表成功

5.3、插入数据

<?php     
$host="172.16.0.29";
$port="15432";
$dbname="postgres";
$user="tbase" ;
$password="";  

//连接数据库
$conn=@pg_connect("host=$host port=$port dbname=$dbname user=$user password=$password");      
if (!$conn){
$error_msg=@pg_errormessage($conn); 
echo "连接数据库出错,详情:".$error_msg."\n"; ;
exit;
}else{
echo "连接数据库成功"."\n";      
} 

//插入数据
$sql="insert into public.tbase values(1,'tbase'),(2,'pgxz');";    
$result = @pg_exec($conn,$sql) ;
if (!$result){
$error_msg=@pg_errormessage($conn); 
echo "插入数据出错,详情:".$error_msg."\n";
exit;
}else{
echo "插入数据成功"."\n";       
}

//关闭连接
pg_close($conn);

?>

执行
[tbase@VM_0_47_centos test]$ curl http://127.0.0.1:8080/dbsta/test/insert.php
连接数据库成功
插入数据成功

5.4、查询数据

<?php     
$host="172.16.0.29";
$port="15432";
$dbname="postgres";
$user="tbase" ;
$password="";  

//连接数据库
$conn=@pg_connect("host=$host port=$port dbname=$dbname user=$user password=$password");      
if (!$conn){
$error_msg=@pg_errormessage($conn); 
echo "连接数据库出错,详情:".$error_msg."\n"; ;
exit;
}else{
echo "连接数据库成功"."\n";      
} 

//查询数据 
$sql="select id,nickname from public.tbase";    
$result = @pg_exec($conn,$sql) ;
if (!$result){
$error_msg=@pg_errormessage($conn); 
echo "查询数据出错,详情:".$error_msg."\n";
exit;
}else{
echo "插入数据成功"."\n";      
}
$record_num = pg_numrows($result);  
echo "返回记录数".$record_num."\n"; 
$rec=pg_fetch_all($result); 
for($i=0;$i<$record_num;$i++){
echo "记录数#".strval($i+1)."\n";
echo "id:".$rec[$i]["id"]."\n";
echo "nickname:".$rec[$i]["nickname"]."\n\n";
}
//关闭连接
pg_close($conn);
?>

调用方法
[root@VM_0_47_centos ~]# curl http://127.0.0.1:8080/dbsta/test/select.php
连接数据库成功
插入数据成功
返回记录数2
记录数#1
id:1
nickname:tbase

记录数#2
id:2
nickname:pgxz

5.5、流数据copy 入表

<?php

$host="172.16.0.29";
$port="15432";
$dbname="postgres";
$user="tbase" ;
$password="";  

//连接数据库
$conn=@pg_connect("host=$host port=$port dbname=$dbname user=$user password=$password");      
if (!$conn){
    $error_msg=@pg_errormessage($conn); 
echo "连接数据库出错,详情:".$error_msg."\n"; ;
exit;
}else{
echo "连接数据库成功"."\n";      
}                                     
$row=ARRAY("1,TBase","2,pgxz");   
$flag=pg_copy_from($conn,"public.tbase",$row,",");

if (!$flag){
    $error_msg=@pg_errormessage($conn); 
echo "copy出错,详情:".$error_msg."\n";
}else{
echo "copy成功"."\n";          
}

//关闭连接
pg_close($conn);

?>

调用方法
curl http://127.0.0.1/dbsta/cron/php_copy_from.php
连接数据库成功
copy成功

5.6、copy to导出数据到一个数组中

<?php

$host="172.16.0.29";
$port="15432";
$dbname="postgres";
$user="tbase" ;
$password="";  

//连接数据库
$conn=@pg_connect("host=$host port=$port dbname=$dbname user=$user password=$password");      
if (!$conn){
    $error_msg=@pg_errormessage($conn); 
echo "连接数据库出错,详情:".$error_msg."\n"; ;
exit;
}else{
echo "连接数据库成功"."\n";      
}                                     

$row=pg_copy_to($conn,"public.tbase",",");  
if (!$row){
    $error_msg=@pg_errormessage($conn); 
echo "copy出错,详情:".$error_msg."\n";
}else{
    print_r($row);
}  
//关闭连接 
pg_close($conn);              
?>


调用方法
curl http://127.0.0.1/dbsta/cron/php_copy_to.php  
连接数据库成功
Array
(
    [0] => 1,TBase

    [1] => 2,pgxz

6、golang程序开发

6.1、连接数据库

package main

import (
"fmt"
"time"

"github.com/jackc/pgx"
)

func main() {
var error_msg string

//连接数据库
    conn, err := db_connect()
if err != nil {
        error_msg = "连接数据库失败,详情:" + err.Error()
        write_log("Error", error_msg)
return
    }
//程序运行结束时关闭连接
defer conn.Close()
    write_log("Log", "连接数据库成功")

}

/*
功能描述:写入日志处理

参数说明:
log_level -- 日志级别,只能是是Error或Log
error_msg -- 日志内容

返回值说明:无
*/

func write_log(log_level string, error_msg string) {
//打印错误信息
    fmt.Println("访问时间:", time.Now().Format("2006-01-02 15:04:05"))
    fmt.Println("日志级别:", log_level)
    fmt.Println("详细信息:", error_msg)
}

/*
功能描述:连接数据库

参数说明:无

返回值说明:
conn *pgx.Conn -- 连接信息
err error --错误信息

*/

func db_connect() (conn *pgx.Conn, err error) {
var config pgx.ConnConfig
    config.Host = "127.0.0.1"    //数据库主机host或ip
    config.User = "tbase"         //连接用户
    config.Password = "pgsql"    //用户密码
    config.Database = "postgres" //连接数据库名
    config.Port = 15432          //端口号
    conn, err = pgx.Connect(config)
return conn, err
}

[root@VM_0_29_centos tbase]# go run conn.go
访问时间:2018-04-03 20:40:28
日志级别:Log
详细信息:连接数据库成功

编译后运行
[root@VM_0_29_centos tbase]# go build conn.go
[root@VM_0_29_centos tbase]# ./conn 
访问时间:2018-04-03 20:40:48
日志级别:Log
详细信息:连接数据库成功

6.2、创建数据表

package main

import (
"fmt"
"time"

"github.com/jackc/pgx"
)

func main() {
var error_msg string
var sql string

//连接数据库
    conn, err := db_connect()
if err != nil {
        error_msg = "连接数据库失败,详情:" + err.Error()
        write_log("Error", error_msg)
return
    }
//程序运行结束时关闭连接
defer conn.Close()
    write_log("Log", "连接数据库成功")

//建立数据表
    sql = "create table public.tbase(id varchar(20),nickname varchar(100)) distribute by shard(id) to group  default_group;"
    _, err = conn.Exec(sql)
if err != nil {
        error_msg = "创建数据表失败,详情:" + err.Error()
        write_log("Error", error_msg)
return
    } else {
        write_log("Log", "创建数据表成功")
    }
}

/*
功能描述:写入日志处理

参数说明:
log_level -- 日志级别,只能是是Error或Log
error_msg -- 日志内容

返回值说明:无
*/

func write_log(log_level string, error_msg string) {
//打印错误信息
    fmt.Println("访问时间:", time.Now().Format("2006-01-02 15:04:05"))
    fmt.Println("日志级别:", log_level)
    fmt.Println("详细信息:", error_msg)
}

/*
功能描述:连接数据库

参数说明:无

返回值说明:
conn *pgx.Conn -- 连接信息
err error --错误信息

*/

func db_connect() (conn *pgx.Conn, err error) {
var config pgx.ConnConfig
    config.Host = "127.0.0.1"    //数据库主机host或ip
    config.User = "tbase"         //连接用户
    config.Password = "pgsql"    //用户密码
    config.Database = "postgres" //连接数据库名
    config.Port = 15432          //端口号
    conn, err = pgx.Connect(config)
return conn, err
}

[root@VM_0_29_centos tbase]# go run createtable.go
访问时间:2018-04-03 20:50:24
日志级别:Log
详细信息:连接数据库成功
访问时间:2018-04-03 20:50:24
日志级别:Log
详细信息:创建数据表成功

6.3、插入数据

package main

import (
"fmt"
"strings"
"time"

"github.com/jackc/pgx"
)

func main() {
var error_msg string
var sql string
var nickname string

//连接数据库
    conn, err := db_connect()
if err != nil {
        error_msg = "连接数据库失败,详情:" + err.Error()
        write_log("Error", error_msg)
return
    }
//程序运行结束时关闭连接
defer conn.Close()
    write_log("Log", "连接数据库成功")

//插入数据
    sql = "insert into public.tbase values('1','tbase'),('2','pgxz');"
    _, err = conn.Exec(sql)
if err != nil {
        error_msg = "插入数据失败,详情:" + err.Error()
        write_log("Error", error_msg)
return
    } else {
        write_log("Log", "插入数据成功")
    }

//绑定变量插入数据,不需要做防注入处理
    sql = "insert into public.tbase values($1,$2),($1,$3);"
    _, err = conn.Exec(sql, "3", "postgresql", "postgres")
if err != nil {
        error_msg = "插入数据失败,详情:" + err.Error()
        write_log("Error", error_msg)
return
    } else {
        write_log("Log", "插入数据成功")
    }

//拼接sql语句插入数据,需要做防注入处理
    nickname = "TBase is ' good!"
    sql = "insert into public.tbase values('1','" + sql_data_encode(nickname) + "')"
    _, err = conn.Exec(sql)
if err != nil {
        error_msg = "插入数据失败,详情:" + err.Error()
        write_log("Error", error_msg)
return
    } else {
        write_log("Log", "插入数据成功")
    }
}

/*
功能描述:sql查询拼接字符串编码

参数说明:
str -- 要编码的字符串

返回值说明:
返回编码过的字符串

*/

func sql_data_encode(str string) string {
return strings.Replace(str, "'", "''", -1)
}

/*
功能描述:写入日志处理

参数说明:
log_level -- 日志级别,只能是是Error或Log
error_msg -- 日志内容

返回值说明:无
*/

func write_log(log_level string, error_msg string) {
//打印错误信息
    fmt.Println("访问时间:", time.Now().Format("2006-01-02 15:04:05"))
    fmt.Println("日志级别:", log_level)
    fmt.Println("详细信息:", error_msg)
}

/*
功能描述:连接数据库

参数说明:无

返回值说明:
conn *pgx.Conn -- 连接信息
err error --错误信息

*/

func db_connect() (conn *pgx.Conn, err error) {
var config pgx.ConnConfig
    config.Host = "127.0.0.1"    //数据库主机host或ip
    config.User = "tbase"         //连接用户
    config.Password = "pgsql"    //用户密码
    config.Database = "postgres" //连接数据库名
    config.Port = 15432          //端口号
    conn, err = pgx.Connect(config)
return conn, err
}

[root@VM_0_29_centos tbase]# go run insert.go
访问时间:2018-04-03 21:05:51
日志级别:Log
详细信息:连接数据库成功
访问时间:2018-04-03 21:05:51
日志级别:Log
详细信息:插入数据成功
访问时间:2018-04-03 21:05:51
日志级别:Log
详细信息:插入数据成功
访问时间:2018-04-03 21:05:51
日志级别:Log
详细信息:插入数据成功

6.4、查询数据

package main

import (
"fmt"
"strings"
"time"

"github.com/jackc/pgx"
)

func main() {
var error_msg string
var sql string

//连接数据库
    conn, err := db_connect()
if err != nil {
        error_msg = "连接数据库失败,详情:" + err.Error()
        write_log("Error", error_msg)
return
    }
//程序运行结束时关闭连接
defer conn.Close()
    write_log("Log", "连接数据库成功")

    sql = "SELECT id,nickname FROM public.tbase LIMIT 2"
    rows, err := conn.Query(sql)
if err != nil {
        error_msg = "查询数据失败,详情:" + err.Error()
        write_log("Error", error_msg)
return
    } else {
        write_log("Log", "查询数据成功")
    }

var nickname string
var id string

for rows.Next() {
        err = rows.Scan(&id, &nickname)
if err != nil {
            error_msg = "执行查询失败,详情:" + err.Error()
            write_log("Error", error_msg)
return
        }
        error_msg = fmt.Sprintf("id:%s nickname:%s", id, nickname)
        write_log("Log", error_msg)
    }
    rows.Close()

    nickname = "tbase"

    sql = "SELECT id,nickname FROM public.tbase WHERE nickname ='" + sql_data_encode(nickname) + "' "
    rows, err = conn.Query(sql)
if err != nil {
        error_msg = "查询数据失败,详情:" + err.Error()
        write_log("Error", error_msg)
return
    } else {
        write_log("Log", "查询数据成功")
    }
defer rows.Close()

for rows.Next() {
        err = rows.Scan(&id, &nickname)
if err != nil {
            error_msg = "执行查询失败,详情:" + err.Error()
            write_log("Error", error_msg)
return
        }
        error_msg = fmt.Sprintf("id:%s nickname:%s", id, nickname)
        write_log("Log", error_msg)
    }
}

/*
功能描述:sql查询拼接字符串编码

参数说明:
str -- 要编码的字符串

返回值说明:
返回编码过的字符串

*/

func sql_data_encode(str string) string {
return strings.Replace(str, "'", "''", -1)
}

/*
功能描述:写入日志处理

参数说明:
log_level -- 日志级别,只能是是Error或Log
error_msg -- 日志内容

返回值说明:无
*/

func write_log(log_level string, error_msg string) {
//打印错误信息
    fmt.Println("访问时间:", time.Now().Format("2006-01-02 15:04:05"))
    fmt.Println("日志级别:", log_level)
    fmt.Println("详细信息:", error_msg)
}

/*
功能描述:连接数据库

参数说明:无

返回值说明:
conn *pgx.Conn -- 连接信息
err error --错误信息

*/

func db_connect() (conn *pgx.Conn, err error) {
var config pgx.ConnConfig
    config.Host = "127.0.0.1"    //数据库主机host或ip
    config.User = "tbase"         //连接用户
    config.Password = "pgsql"    //用户密码
    config.Database = "postgres" //连接数据库名
    config.Port = 15432          //端口号
    conn, err = pgx.Connect(config)
return conn, err
}

[root@VM_0_29_centos tbase]# go run select.go
访问时间:2018-04-09 10:35:50
日志级别:Log
详细信息:连接数据库成功
访问时间:2018-04-09 10:35:50
日志级别:Log
详细信息:查询数据成功
访问时间:2018-04-09 10:35:50
日志级别:Log
详细信息:id:2 nickname:tbase
访问时间:2018-04-09 10:35:50
日志级别:Log
详细信息:id:3 nickname:postgresql
访问时间:2018-04-09 10:35:50
日志级别:Log
详细信息:查询数据成功
访问时间:2018-04-09 10:35:50
日志级别:Log
详细信息:id:1 nickname:tbase

6.5、流数据copy from入表

package main

import (
"fmt"
"math/rand"
"time"

"github.com/jackc/pgx"
)

func main() {
var error_msg string

//连接数据库
    conn, err := db_connect()
if err != nil {
        error_msg = "连接数据库失败,详情:" + err.Error()
        write_log("Error", error_msg)
return
    }
//程序运行结束时关闭连接
defer conn.Close()
    write_log("Log", "连接数据库成功")

//构造5000行数据
    inputRows := [][]interface{}{}
var id string
var nickname string
for i := 0; i < 5000; i++ {
        id = fmt.Sprintf("%d", rand.Intn(10000))
        nickname = fmt.Sprintf("%d", rand.Intn(10000))
        inputRows = append(inputRows, []interface{}{id, nickname})
    }
    copyCount, err := conn.CopyFrom(pgx.Identifier{"tbase"}, []string{"id", "nickname"}, pgx.CopyFromRows(inputRows))
if err != nil {
        error_msg = "执行copyFrom失败,详情:" + err.Error()
        write_log("Error", error_msg)
return
    }
if copyCount != len(inputRows) {
        error_msg = fmt.Sprintf("执行copyFrom失败,copy行数:%d 返回行数为:%d", len(inputRows), copyCount)
        write_log("Error", error_msg)
return
    } else {
        error_msg = "Copy 记录成功"
        write_log("Log", error_msg)
    }

}

/*
功能描述:写入日志处理

参数说明:
log_level -- 日志级别,只能是是Error或Log
error_msg -- 日志内容

返回值说明:无
*/

func write_log(log_level string, error_msg string) {
//打印错误信息
    fmt.Println("访问时间:", time.Now().Format("2006-01-02 15:04:05"))
    fmt.Println("日志级别:", log_level)
    fmt.Println("详细信息:", error_msg)
}

/*
功能描述:连接数据库

参数说明:无

返回值说明:
conn *pgx.Conn -- 连接信息
err error --错误信息

*/

func db_connect() (conn *pgx.Conn, err error) {
var config pgx.ConnConfig
    config.Host = "127.0.0.1"    //数据库主机host或ip
    config.User = "tbase"         //连接用户
    config.Password = "pgsql"    //用户密码
    config.Database = "postgres" //连接数据库名
    config.Port = 15432          //端口号
    conn, err = pgx.Connect(config)
return conn, err
}

[root@VM_0_29_centos tbase]# go run copy_from.go
访问时间:2018-04-09 10:36:40
日志级别:Log
详细信息:连接数据库成功
访问时间:2018-04-09 10:36:40
日志级别:Log
详细信息:Copy 记录成功

6.6、golang相关资源包

需要git的资源包

https://github.com/jackc/pgx

https://github.com/pkg/errors

CENTER_PostgreSQL_Community

请在登录后发表评论,否则无法保存。
1楼 xcvxcvsdf
2024-11-22 01:19:41+08

http://ouyu.hftcbmw.cn/fjwz/ http://tuiguang.hntcxxw.cn/xjtlf/ http://cf.lstcxxw.cn/kfqz/ http://shenghuo.china-bbs.com/hengshui/ https://sjzxinhua.tiancebbs.cn/ https://hcqjingjikaifa.tiancebbs.cn/ http://ruanwen.xztcxxw.cn/shzhabei/ https://bazhong.tiancebbs.cn/ http://huaguang.jxtcbmw.cn/ktvjz/ http://fuyang.tjtcbmw.cn/scnj/ http://cf.lstcxxw.cn/panzhihua/ http://yz.cqtcxxw.cn/yulin/ http://tuiguang.hntcxxw.cn/plq/ http://yz.cqtcxxw.cn/sxyq/ https://shangzhoucun.tiancebbs.cn/ http://bjtcxxw.cn/jiamusi/ http://taiying.njtcbmw.cn/jsjz/

2楼 xcvxcvsdf
2024-11-08 06:03:35+08

http://cf.lstcxxw.cn/bjsy/ http://ouyu.hftcbmw.cn/qingpush/ http://ly.shtcxxw.cn/shiyan/ https://fenlei.tiancebbs.cn/hblf/ http://wutai.cqtcxxw.cn/ziyang/ http://jingren.hftcbmw.cn/xinyang/ https://honglinglinchang.tiancebbs.cn/ https://tianjun.tiancebbs.cn/ http://bjtcxxw.cn/guangxi/ https://hepingjie.tiancebbs.cn/ https://honglan.tiancebbs.cn/yangjiang/ https://dipai.tiancebbs.cn/ https://linzhaizhen.tiancebbs.cn/ http://yz.cqtcxxw.cn/bs/ https://xihua.tiancebbs.cn/ https://aihuishou.tiancebbs.cn/nhtj/ https://xitugaoxin.tiancebbs.cn/

3楼 xcvxcvsdf
2024-10-29 13:00:40+08

https://taoshan.tiancebbs.cn/ http://taiying.njtcbmw.cn/zibo/ https://huangsongyu.tiancebbs.cn/ http://xinguang.sctcbmw.cn/shputuo/ http://huilong.sctcbmw.cn/dp/ https://laizhou.tiancebbs.cn/ http://cf.lstcxxw.cn/zlzs/ http://jingren.hftcbmw.cn/ganzhou/ http://bjtcxxw.cn/qmfssm/ http://fuyang.tjtcbmw.cn/jswx/ http://nalei.zjtcbmw.cn/qhhd/ http://fuyang.tjtcbmw.cn/taian/ http://bjtcxxw.cn/shyangpu/ https://dingri.tiancebbs.cn/ https://hdfurong.tiancebbs.cn/ https://liuhe.tiancebbs.cn/ http://nalei.zjtcbmw.cn/hbycd/

4楼 xcvxcvsdf
2024-10-18 11:33:57+08

https://zulin.tiancebbs.cn/sh/1868.html https://sh.tiancebbs.cn/hjzl/466438.html https://www.tiancebbs.cn/ershouwang/473491.html https://sys.tiancebbs.cn/qths/474047.html https://www.tiancebbs.cn/ershouwang/468727.html https://changshushi.tiancebbs.cn/hjzl/458569.html https://zulin.tiancebbs.cn/sh/2875.html https://www.tiancebbs.cn/ershoufang/467995.html https://su.tiancebbs.cn/hjzl/469121.html https://sh.tiancebbs.cn/hjzl/461360.html https://taicang.tiancebbs.cn/hjzl/459801.html https://zulin.tiancebbs.cn/sh/3856.html https://zulin.tiancebbs.cn/sh/2682.html https://aihuishou.tiancebbs.cn/sh/4075.html https://changshushi.tiancebbs.cn/hjzl/458565.html https://zulin.tiancebbs.cn/sh/2116.html https://aihuishou.tiancebbs.cn/sh/1360.html

5楼 xiaowu
2024-04-24 10:39:57+08

长深高速起点和终点:https://www.nanss.com/shenghuo/18184.html 驿站是什么意思:https://www.nanss.com/wenti/19787.html 朝花夕拾读后感600字:https://www.nanss.com/xuexi/19631.html 什么是ppt:https://www.nanss.com/wenti/18555.html 银行年终总结:https://www.nanss.com/gongzuo/19117.html 我为群众办实事:https://www.nanss.com/gongzuo/19988.html 新闻报道范文:https://www.nanss.com/xuexi/18600.html 徐梦桃的励志故事:https://www.nanss.com/gongzuo/19067.html 黄土高原成因:https://www.nanss.com/shenghuo/18261.html 护士简历:https://www.nanss.com/gongzuo/18743.html 唐代诗人:https://www.nanss.com/shenghuo/19012.html 凤凰古城在湖南哪个市:https://www.nanss.com/shenghuo/19892.html 海带的营养价值:https://www.nanss.com/yinshi/19481.html 袁枚是哪个朝代的:https://www.nanss.com/shenghuo/18495.html 一字千金典故与哪位人物有关:https://www.nanss.com/shenghuo/18573.html 关于端午节的诗词:https://www.nanss.com/xuexi/18248.html 采购部工作总结:https://www.nanss.com/gongzuo/19354.html 学校领导班子述职报告:https://www.nanss.com/gongzuo/19744.html 氧化物的定义:https://www.nanss.com/xuexi/18368.html 一海里等于多少米:https://www.nanss.com/wenti/19013.html 入党积极分子心得:https://www.nanss.com/xuexi/19571.html 仲裁申请书:https://www.nanss.com/gongzuo/18680.html 中秋节的习俗:https://www.nanss.com/shenghuo/19114.html 万圣节的故事:https://www.nanss.com/yuedu/18485.html 老鼠怕什么:https://www.nanss.com/wenti/19417.html BPO是什么:https://www.nanss.com/gongzuo/19471.html 谁指鹿为马:https://www.nanss.com/wenti/18314.html 营销方案:https://www.nanss.com/gongzuo/18684.html 狸猫换太子:https://www.nanss.com/yuedu/18347.html 最美乡村医生事迹材料:https://www.nanss.com/gongzuo/18443.html

© 2010 PostgreSQL中文社区