GVKun编程网logo

PostgreSQL向数据库表中添加行数据的操作

26

在这篇文章中,我们将带领您了解PostgreSQL向数据库表中添加行数据的操作的全貌,同时,我们还将为您介绍有关ETL数据集成丨将PostgreSQL数据库数据实时同步至PostgreSQL、php连

在这篇文章中,我们将带领您了解PostgreSQL向数据库表中添加行数据的操作的全貌,同时,我们还将为您介绍有关ETL数据集成丨将PostgreSQL数据库数据实时同步至PostgreSQL、php连接与操作PostgreSQL数据库的方法,postgresql数据库、php连接与操作PostgreSQL数据库的方法,postgresql数据库_PHP教程、Postgresql ODBC 驱动,用 sqlserver 添加 dblink 跨库访问 postgresql 数据库的知识,以帮助您更好地理解这个主题。

本文目录一览:

PostgreSQL向数据库表中添加行数据的操作

PostgreSQL向数据库表中添加行数据的操作

  项目招商找A5 快速获取精准代理名单

这篇文章主要介绍了PostgreSQL向数据库表中添加行数据的操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

实例:

例如数据库中有一个2013Rainfall数据表

想在下面接着插入一行数据,在pgAmin III 界面中,点击SQL,并其界面下输入,

如下图所示

并运行,同时刷新编辑数据界面,可看到数据插入成功,

如下图所示

补充:postgresql向表中插入大量数据

不使用存储过程:

1insert into schema.table select generate_series(1,10000),'a';

以上表中有一列int类型列和一列char型列,generate_series(1,10000)作用为产生数列1、2、3…10000,因此执行完以上语句后表中被插入了10000条数据。

使用存储过程:

create or replace function input()
returns boolean AS
$BODY$
declare i integer;
begin
i:=1;
for i in 1..1000000 loop
insert into schema名.table名 values(值);
end loop;
return true;
end;
$BODY$
language plpgsql;

以上存储过程给表插入了100W条数据。

之后调用存储过程即可:

1select * from 存储过程名();

文章来源:

来源地址:https://www.jb51.net/article/205145.htm

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 yy@haotui.cn 举报,一经查实,本站将立刻删除。

ETL数据集成丨将PostgreSQL数据库数据实时同步至PostgreSQL

ETL数据集成丨将PostgreSQL数据库数据实时同步至PostgreSQL

前言

我们在进行数据集成、实时数据同步中,经常会出现在同一个数据库中做数据同步和复制、实时分析和报告、负载均衡和高可用性等场景,这次我们以PostgreSQL为例,通过ETLCloud工具,进行同数据库中数据实时同步的步骤应该如何设置。

其中会涉及到以下操作:

  • 数据源配置:正确配置源数据库(InPostgresSQL)和目标数据库(OutPostgresSQL)是数据同步的基础。这一步骤中,除了输入基本的连接信息,如主机名、端口、用户名、密码外,还需要考虑数据库的SSL设置、字符集等高级选项,确保数据在传输过程中的安全性与兼容性。
  • 组件选择与配置:在ETLCloud的组件市场中,选择适合的组件(如库表输出组件)是实现特定数据处理任务的关键。配置组件时,明确指定源表和目标表的映射关系,以及如何处理数据类型不匹配、字段缺失等问题,这些细节直接关系到数据同步的准确性和完整性。
  • 监听器与CDC设置:创建监听器并关联已配置的流程,实质上是启动了数据变化的监听机制。在这个过程中,仔细选择监听的数据库表和操作类型(插入、更新、删除)是必要的,同时也要注意设置合理的数据缓冲策略,以平衡性能与数据实时性的需求。

数据同步实操演示

数据源配置:

先创建PostgreSQL数据源,一个源数据库(InPostgresSQL)和目标数据库(OutPostgresSQL),做好准备工作。

图片 1

想自己建分类的,可以在这里自定义分类

image.png

组件选择:

新建个流程,然后配置个库表输出组件,没有组件的去官网购买

图片 1

图片 1

监听器与CDC设置:

图片 1

图片 1

图片 1

再创建一个监听器

图片 1

图片 1

选择刚刚的流程

图片 1

图片 1

启动监听器

图片 1

源数据库

图片 1

目标数据库

图片 1

结语

在深入实践ETLCloud平台进行PostgreSQL到PostgreSQL的数据实时同步之前,让我们首先理解这一操作背后的理论基础和技术优势,这不仅对于执行具体操作至关重要,也是评估数据集成解决方案效能的关键。通过上述详细的操作演示和原理解析,我们可以看到,ETLCloud的实时数据处理能力、灵活的微服务架构以及直观易用的可视化操作界面,为企业提供了一个高效、可靠的数据集成解决方案。无论是应对大规模数据量的挑战,还是满足严格的数据合规性要求,都能通过其全面的功能集,助力企业构建起坚实的数据基础,推动数字化转型的深入发展。

php连接与操作PostgreSQL数据库的方法,postgresql数据库

php连接与操作PostgreSQL数据库的方法,postgresql数据库

php连接与操作PostgreSQL数据库的方法,postgresql数据库

本文实例讲述了php连接与操作postgresql数据库的方法。分享给大家供大家参考。

具体实现方法如下:

复制代码 代码如下:


$pg=@pg_connect("host=localhost user=postgres password=sa dbname=employes")
or die("can''t connect to database.");
$query="select * from employes order by serial_no";
//$query="insert into employes values(10008,''susan'',''1985-09-04'',''80'',''50'')";
$result=@pg_query($pg,$query) or die("can''t run query to table.");
//echo pg_num_rows($result); //输出多少条记录被查询
//if($result)
//{
//echo "recrods inserted sucessfully!";
//echo pg_affected_rows($result);//输出多少条记录被插入
//}
//实例一[pg_fetch_row]
echo "

";
echo "";
echo "";
echo"";
echo"";
echo"";
for($i=0;$i {
$row=@pg_fetch_row($result) or die("can''t fetch row from table.");
$serial_no= $row[0];
$name= $row[1];
$birthday= $row[2];
echo"";
echo"";
echo"";
echo"";
echo"";
}
echo"
serial_nonamebirthday
$serial_no$name$birthday
";
//实例二[pg_fetch_array]
//echo "";
//echo "";
//echo "";
//echo"";
//echo"";
//echo"";
//
//for($i=0;$i //{
//
//$row=@pg_fetch_array($result) or die("can''t fetch row from table.");
//$serial_no= $row[''serial_no''];
//$name= $row[''name''];
//$birthday= $row[''birthday''];
//echo"";
//echo"";
//echo"";
//echo"";
//echo"";
//
//}
//echo"
serial_nonamebirthday
$serial_no$name$birthday
";
//增加,删除,修改实例
//$newrow=array("serial_no"=>"1006","name"=>"peter","birthday"=>"1990-07-03","salary"=>"90","bonus"=>"80");
//$reusult=@pg_insert($pg,"employes",$newrow) or die("can''t insert data to table.");
//if($reusult)
//{
//echo "rechords inserted sucessfully!";
//}
//
pg_close($pg);

希望本文所述对大家的PHP程序设计有所帮助。

php连接与操作PostgreSQL数据库的方法,postgresql数据库_PHP教程

php连接与操作PostgreSQL数据库的方法,postgresql数据库_PHP教程

php连接与操作PostgreSQL数据库的方法,postgresql数据库

本文实例讲述了php连接与操作postgresql数据库的方法。分享给大家供大家参考。

具体实现方法如下:

复制代码 代码如下:

$pg=@pg_connect("host=localhost user=postgres password=sa dbname=employes")
or die("can''t connect to database.");
$query="select * from employes order by serial_no";
//$query="insert into employes values(10008,''susan'',''1985-09-04'',''80'',''50'')";
$result=@pg_query($pg,$query) or die("can''t run query to table.");
//echo pg_num_rows($result); //输出多少条记录被查询
//if($result)
//{
//echo "recrods inserted sucessfully!";
//echo pg_affected_rows($result);//输出多少条记录被插入
//}
//实例一[pg_fetch_row]
echo "";
echo "";
echo "";
echo"";
echo"";
echo"";
for($i=0;$i {
$row=@pg_fetch_row($result) or die("can''t fetch row from table.");
$serial_no= $row[0];
$name= $row[1];
$birthday= $row[2];
echo"";
echo"";
echo"";
echo"";
echo"";
}
echo"
serial_nonamebirthday
$serial_no$name$birthday
";
//实例二[pg_fetch_array]
//echo "";
//echo "";
//echo "";
//echo"";
//echo"";
//echo"";
//
//for($i=0;$i //{
//
//$row=@pg_fetch_array($result) or die("can''t fetch row from table.");
//$serial_no= $row[''serial_no''];
//$name= $row[''name''];
//$birthday= $row[''birthday''];
//echo"";
//echo"";
//echo"";
//echo"";
//echo"";
//
//}
//echo"
serial_nonamebirthday
$serial_no$name$birthday
";
//增加,删除,修改实例
//$newrow=array("serial_no"=>"1006","name"=>"peter","birthday"=>"1990-07-03","salary"=>"90","bonus"=>"80");
//$reusult=@pg_insert($pg,"employes",$newrow) or die("can''t insert data to table.");
//if($reusult)
//{
//echo "rechords inserted sucessfully!";
//}
//
pg_close($pg);

希望本文所述对大家的PHP程序设计有所帮助。

www.bkjia.comtruehttp://www.bkjia.com/PHPjc/932488.htmlTechArticlephp连接与操作PostgreSQL数据库的方法,postgresql数据库 本文实例讲述了php连接与操作postgresql数据库的方法。分享给大家供大家参考。 具体实...

Postgresql ODBC 驱动,用 sqlserver 添加 dblink 跨库访问 postgresql 数据库

在同样是 SQLserver 数据库跨库访问时,只需要以下方法

declare @rowcount int
set @rowcount = 0
set @rowcount =(select COUNT(*) from sys.servers where name = ''ITSV2'')
if @rowcount <= 0 
begin
exec sp_addlinkedserver  ''ITSV2'', '' '', ''SQLOLEDB'', ''192.168.0.222,8989''   --IP,端口号
end 
exec sp_addlinkedsrvlogin ''ITSV2'',''false'',null, ''sa'', ''sa1234'' --数据库链接账号、密码
--select * from [ITSV2].数据库.dbo.表 

 

做项目的时候遇到数据对接问题,需要从其他地方同步数据到本项目,本项目是使用 sqlserver 数据库,而对方使用的是 postgresql 数据库。

一、下载安装 postgresql ODBC 驱动

在 PostgreSql 官网下载 ODBC 驱动,网址:https://www.postgresql.org/ftp/odbc/versions/msi/

本数据库所在的服务器是 64 位,我找最新版本的 64 位的

 

 

下载下来为  psqlodbc_x64.msi

 

在网上有人下载使用的的另一个,这个是收费的,但是有免费使用期。

 

下载好后放在本项目数据库所在服务器上,安装,直接点下一步就好了,

二、ODBC 添加数据源

找到控制面板 -- 管理工具 -- 数据源 (ODBC)-- 系统 DSN

找到 postgresql - 完成 ,然后输入对方的数据库信息,点击测试,显示连接成功。说明和对方的数据库可以连接了。

 

 

三、数据库添加 dblink,连接对方 postgresql,查询数据

1、在数据库中添加 linkedserver

execute sp_addlinkedserver 
    @server=''sourceDB'',    --被访问的服务器别名,可以自己定义
        @srvproduct=''Any'',
        @provider=''MSDASQL'',
        @datasrc=''PostgreSQL35W''    --被访问的服务器地址(IP地址,端口号\服务器名称)  --PostgreSQL35W 上面第二步设置的名称
--创建本地用户与远程服务器中用户之间的映射

execute sp_addlinkedsrvlogin 
    @rmtsrvname=''sourceDB'',    --被访问的服务器别名 ,
        @useself=''false'',    --是否通过模拟本地登录名或显式提交登录名和密码来连接到远程服务器
        @locallogin=null,    --本地登录
        @rmtuser=''user01'',    --对方数据库用户名
        @rmtpassword=''123456''    --对方数据库密码

 2、select * from sys.servers 查到刚才添加的,说明添加成功。

--显示的linkedserver
--select * from sys.servers

--同步数据后 可以关闭连接,
--删除运行本地与远程之间的用户映射 --execute sys.sp_droplinkedsrvlogin @rmtsrvname=''sourceDB'',@locallogin=null --删除链接服务器 --execute sys.sp_dropserver @server=''sourceDB''

 3、查询数据

此处可能会遇到的问题:

(1) 对方 postgresql 版本可能较低,需要查询语句中字段、表名都需要加双引号,如果不加会出错,提示不存在表

错误信息:

链接服务器 "sourceDB" 的 OLE DB 访问接口 "MSDASQL" 返回了消息 "ERROR: relation"lgs_purchaseorder" does not exist;
No query has been executed with that handle"。
消息 7350,级别 16,状态 2,第 114 行
无法从链接服务器 "sourceDB" 的 OLE DB 访问接口 "MSDASQL" 获取列信息。

(2) 报以下错误,一般在查找数字列的时候出现,这个是所查出的数字精度比较大,而 sqlserver 查出所表示的精度没有那么大

解决方法可以是不查数字列,或者是将该数字列转换成字符串表达

SELECT * from openquery (sourceDB,''select "OrderNo","ItemNo","PartNo","Qty" from "LGS_PurchaseOrder" order by "OrderNo" desc limit 100'') -- 查询报以下错误

消息 7356,级别 16,状态 1,第 112 行
链接服务器 "sourceDB" 的 OLE DB 访问接口 "MSDASQL" 为列提供的元数据不一致。
对象 "select"OrderNo","ItemNo","PartNo","Qty"from"LGS_PurchaseOrder"order by"OrderNo"desc limit 100"
的列 "Qty" (编译时序号为 4) 在编译时有 6 的 "SCALE",但在运行时有 8。

 调整:将数字列调整为字符串

SELECT * from openquery(sourceDB,''select "OrderNo","ItemNo","PartNo",cast("Qty" as char(30)) from "LGS_PurchaseOrder" order by "OrderNo" desc limit 100'')

结果:调整后就可以查出数据,就可以拿对方数据库得数据做自己的业务逻辑操作了。

(3) 如何在存储过程中用 openquery 加参数化查询

一般的加写死的参数方法为

SELECT * from openquery(sourceDB,
''select "OrderNo","ItemNo","PartNo","WindowTime","CloseTime" from "LGS_PurchaseOrder" where "WindowTime" > ''''2019-12-18 16:00:00.0000000'''' '');

如果需要把条件换成参数,下面这样是不行的,会提示语法错误,

--DECLARE @nowdate NVARCHAR(50)
--SET @nowdate = ''2018-08-18 16:00:09.0000000''
SELECT * from openquery(sourceDB,
''select "OrderNo","ItemNo","PartNo","WindowTime","CloseTime" from "LGS_PurchaseOrder" 
where "WindowTime" > ''''''+@nowdate+''''''   limit 100'')

正确的解决方法是用 exec 执行方式,如下

DECLARE @b VARCHAR(50)
DECLARE @sql varchar(500)
DECLARE @nowdate NVARCHAR(50)
SET @nowdate = ''2019-12-18 16:00:09.0000000''
SET @sql =''select * from openquery (sourceDB,''''select "OrderNo","ItemNo","PartNo","WindowTime","CloseTime"
 from "LGS_PurchaseOrder" where "WindowTime"> ''''''''''+@nowdate+'''''''''''''')'';
EXEC(@sql)

 

关于PostgreSQL向数据库表中添加行数据的操作的问题就给大家分享到这里,感谢你花时间阅读本站内容,更多关于ETL数据集成丨将PostgreSQL数据库数据实时同步至PostgreSQL、php连接与操作PostgreSQL数据库的方法,postgresql数据库、php连接与操作PostgreSQL数据库的方法,postgresql数据库_PHP教程、Postgresql ODBC 驱动,用 sqlserver 添加 dblink 跨库访问 postgresql 数据库等相关知识的信息别忘了在本站进行查找喔。

本文标签:

上一篇PostGreSql 判断字符串中是否有中文的案例(plsql判断字符串是否数字)

下一篇postgresql 将逗号分隔的字符串转为多行的实例