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连接数据库成功插入数据成功
<?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记录数#1id:1nickname:tbase记录数#2id:2nickname: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成功
<?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 mainimport ("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或Logerror_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.ConnConfigconfig.Host = "127.0.0.1" 数据库主机host或ipconfig.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详细信息:连接数据库成功
package mainimport ("fmt""time""github.com/jackc/pgx")func main() {var error_msg stringvar 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或Logerror_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.ConnConfigconfig.Host = "127.0.0.1" 数据库主机host或ipconfig.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 mainimport ("fmt""strings""time""github.com/jackc/pgx")func main() {var error_msg stringvar sql stringvar 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或Logerror_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.ConnConfigconfig.Host = "127.0.0.1" 数据库主机host或ipconfig.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 mainimport ("fmt""strings""time""github.com/jackc/pgx")func main() {var error_msg stringvar 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 stringvar id stringfor 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或Logerror_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.ConnConfigconfig.Host = "127.0.0.1" //数据库主机host或ipconfig.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 mainimport ("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 stringvar nickname stringfor 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或Logerror_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.ConnConfigconfig.Host = "127.0.0.1" //数据库主机host或ipconfig.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相关资源包

最后修改时间:2019-12-17 09:26:44
文章转载自PostgreSQL中文社区,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




