文本方式Copy
1. 创建测试表
sde=# \d test
Table "sde.test"
Column | Type | Collation | Nullable | Default
--------+---------+-----------+----------+---------
id | integer | | |
info | text | | |
2. 插入两条记录
string sql = "COPY TEST FROM stdin;";
PGresult* execresult = PQexec(m_pgconn, sql.c_str());
//服务器端执行DoCopy函数,并等待后续数据的到来
//获取执行状态
ExecStatusType execstatus = PQresultStatus(execresult);
if (PGRES_COPY_IN!= execstatus)
{
PQclear(execresult);
return -1;
}
发送实际数据,插入值是4,6,空三个值
sql = "4\ta";
sql += "\n";
sql += "6\t\\N";
sql += "\n";
sql += "\\N\tc";
sql += "\n";
//向数据库发送实际数据
int result = PQputCopyData(m_pgconn,sql.c_str(),sql.size());
if(1 != result)
{
char* error = PQerrorMessage(m_pgconn);
return -1;
}
//结束发送,导致后台继续执行DoCopy,并再循环中调用NextCopyFrom存储数据,该函数中会调用int4in函数
result = PQputCopyEnd(m_pgconn, error);
if(1 != result)
{
return -1;
}
execresult <
PostgreSQL COPY命令详解

本文详细解析了PostgreSQL中COPY命令的使用方法,包括文本方式和二进制方式的COPY操作,展示了如何通过COPY命令高效地导入导出数据。特别介绍了二进制COPY的文件格式细节,以及如何在程序中实现数据的发送。
最低0.47元/天 解锁文章
419

被折叠的 条评论
为什么被折叠?



