Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 在pqxx中使用COPY_C++_Postgresql_Libpqxx - Fatal编程技术网

C++ 在pqxx中使用COPY

C++ 在pqxx中使用COPY,c++,postgresql,libpqxx,C++,Postgresql,Libpqxx,现在,是否有不同的方法使用pqxx将大量数据复制到数据库中 我目前使用的是一个预先准备好的语句,但每秒只能得到大约4k的插入,这不足以跟上我接收到的数据。以下是我的测试代码: conn.prepare("test_prepared", "INSERT INTO test VALUES ($1, $2, $3, $4, $5, $6)") ("real")

现在,是否有不同的方法使用pqxx将大量数据复制到数据库中

我目前使用的是一个预先准备好的语句,但每秒只能得到大约4k的插入,这不足以跟上我接收到的数据。以下是我的测试代码:

  conn.prepare("test_prepared", "INSERT INTO test VALUES ($1, $2, $3, $4, $5, $6)")
    ("real")                                                                    
    ("varchar", pqxx::prepare::treat_string)                                    
    ("varchar", pqxx::prepare::treat_string)                                    
    ("varchar", pqxx::prepare::treat_string)                                    
    ("varchar", pqxx::prepare::treat_string)                                    
    ("bytea")  

// ...     

for (int i=0; i < LOOPS; i++) { 
    pqxx::work txn2(conn);                                                      
    for (int j=0; j < ROWS_PER_SECOND; j++) {                                   
        // ...
        txn2.prepared("test_prepared")(ts)(field1)(field2)(field3)(field4)(conn.esc_raw(bin, 10000)).exec();
    }
    txn2.commit();
    usleep(1000000);  // sleep for a second
}

所以postgres完全能够处理这个用例。pqxx的等效功能是什么?

如果所有其他功能都失败,请使用底层的
libpq
COPY
支持。
  for i in range(ROWS_PER_SECOND):                                                            
    vals.append('%f\t%s\t%s\t%s\t%s\t%s' % (time.time(), util.random_text(50),  
      util.random_text(50), util.random_text(50), util.random_text(50),         
      util.random_text(10000)))                                                 
  f = StringIO('\n'.join(vals))                                                 
  cur.copy_from(f, 'test', \                                                    
      columns=('timestamp', 'field1', 'field2', 'field3', 'field4', 'bin'))     
  conn.commit()