首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >postgres.ECPG:“从:file_name复制数据”可以吗?

postgres.ECPG:“从:file_name复制数据”可以吗?
EN

Stack Overflow用户
提问于 2012-08-01 21:41:36
回答 2查看 271关注 0票数 1

我正在编写一个需要与postgres交互的C++应用程序。我希望使用COPY语句初始化表数据

下面是代码:

代码语言:javascript
复制
EXEC SQL BEGIN DECLARE SECTION ;
  const char * fileData_name = file_data_name ;
EXEC SQL END DECLARE SECTION ;

EXEC SQL COPY datas
         FROM :fileData_name
         WITH (FORMAT text, DELIMITER '|') ;

下面是来自ecpg的错误消息:

代码语言:javascript
复制
ERROR: syntax error at or near ":fileData_name"

根据postgres的文档:这种在语句中插入C变量的样式可以在任何需要值表达式的地方工作。

如果从字段中复制内容,那么我猜该字段不是一个值表达式。

有什么帮助吗?

thx :-)

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-08-06 22:48:31

好吧,那是不可能的。根据这个职位的说法。但是,可以使用预先准备好的语句:

代码语言:javascript
复制
char * sql_template = 
    "COPY datas FROM '%s' WITH (FORMAT text, DELIMITER '|');" ;
const char * file_name = "myfile.data";
unsigned int sql_command_len = 
    strlen (sql_template) - 2 + strlen (file_name) + 1;

EXEC SQL BEGIN DECLARE SECTION ; 
    char * sql_command = (char*) malloc (sizeof(char)*sql_command_len) ; 
EXEC SQL END DECLARE SECTION ; 

sprintf (sql_command, sql_template, file_name) ;

EXEC SQL PREPARE cpy FROM :sql_command;
EXEC SQL EXECUTE cpy ;
EXEC SQL DEALLOCATE PREPARE cpy ;
free (sql_command) ;
票数 0
EN

Stack Overflow用户

发布于 2021-09-28 08:54:08

只要单引号,:fileData_name变量根据PostgreSQL文档化

代码语言:javascript
复制
EXEC SQL COPY datas
         FROM ':fileData_name'
         WITH (FORMAT text, DELIMITER '|') ;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11767992

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档