使用C脚本将存储在变量中的数据插入PostgreSQL数据库表的步骤如下:
#include <stdio.h>
#include <stdlib.h>
#include <libpq-fe.h>
const char *conninfo = "host=<数据库主机地址> port=<数据库端口> dbname=<数据库名> user=<用户名> password=<密码>";
请将<数据库主机地址>
、<数据库端口>
、<数据库名>
、<用户名>
和<密码>
替换为实际的数据库连接信息。
PGconn *conn = PQconnectdb(conninfo);
if (PQstatus(conn) != CONNECTION_OK) {
fprintf(stderr, "数据库连接失败: %s\n", PQerrorMessage(conn));
PQfinish(conn);
exit(1);
}
const char *sql = "INSERT INTO <表名> (<列1>, <列2>, ...) VALUES ($1, $2, ...)";
const char *data1 = "数据1";
const char *data2 = "数据2";
...
请将<表名>
、<列1>
、<列2>
等替换为实际的表名和列名,$1
、$2
等为占位符。
PGresult *res = PQprepare(conn, "insert_stmt", sql, 0, NULL);
if (PQresultStatus(res) != PGRES_COMMAND_OK) {
fprintf(stderr, "预处理语句创建失败: %s\n", PQerrorMessage(conn));
PQclear(res);
PQfinish(conn);
exit(1);
}
PQclear(res);
const char *paramValues[<变量个数>] = {data1, data2, ...};
int paramLengths[<变量个数>] = {strlen(data1), strlen(data2), ...};
int paramFormats[<变量个数>] = {0, 0, ...}; // 0表示文本格式,1表示二进制格式
res = PQexecPrepared(conn, "insert_stmt", <变量个数>, paramValues, paramLengths, paramFormats, 0);
if (PQresultStatus(res) != PGRES_COMMAND_OK) {
fprintf(stderr, "插入数据失败: %s\n", PQerrorMessage(conn));
PQclear(res);
PQfinish(conn);
exit(1);
}
PQclear(res);
请将<变量个数>
替换为实际的变量个数。
PQfinish(conn);
完整的C脚本示例代码如下:
#include <stdio.h>
#include <stdlib.h>
#include <libpq-fe.h>
int main() {
const char *conninfo = "host=<数据库主机地址> port=<数据库端口> dbname=<数据库名> user=<用户名> password=<密码>";
PGconn *conn = PQconnectdb(conninfo);
if (PQstatus(conn) != CONNECTION_OK) {
fprintf(stderr, "数据库连接失败: %s\n", PQerrorMessage(conn));
PQfinish(conn);
exit(1);
}
const char *sql = "INSERT INTO <表名> (<列1>, <列2>, ...) VALUES ($1, $2, ...)";
const char *data1 = "数据1";
const char *data2 = "数据2";
// ...
PGresult *res = PQprepare(conn, "insert_stmt", sql, 0, NULL);
if (PQresultStatus(res) != PGRES_COMMAND_OK) {
fprintf(stderr, "预处理语句创建失败: %s\n", PQerrorMessage(conn));
PQclear(res);
PQfinish(conn);
exit(1);
}
PQclear(res);
const char *paramValues[<变量个数>] = {data1, data2, ...};
int paramLengths[<变量个数>] = {strlen(data1), strlen(data2), ...};
int paramFormats[<变量个数>] = {0, 0, ...}; // 0表示文本格式,1表示二进制格式
res = PQexecPrepared(conn, "insert_stmt", <变量个数>, paramValues, paramLengths, paramFormats, 0);
if (PQresultStatus(res) != PGRES_COMMAND_OK) {
fprintf(stderr, "插入数据失败: %s\n", PQerrorMessage(conn));
PQclear(res);
PQfinish(conn);
exit(1);
}
PQclear(res);
PQfinish(conn);
return 0;
}
请将<数据库主机地址>
、<数据库端口>
、<数据库名>
、<用户名>
、<密码>
、<表名>
、<列1>
、<列2>
等替换为实际的值。
对于腾讯云相关产品,可以使用腾讯云的云数据库 PostgreSQL(https://cloud.tencent.com/product/postgres)来存储和管理数据。
领取专属 10元无门槛券
手把手带您无忧上云