
GaussDB(DWS)數據入庫方式主要有三種:INSERT/COPY/FDW,三者性能INSERT最差,FDW(gds外表/obs外表)性能最好,但在很多客戶場景下都是流式數據,不額外落盤,需要直接入庫,這種場景下可以采用copy方式入庫,C語言開發應用程序時,ODBC暫不支持copy接口,但libpq支持,示例程序如下:
#include #include #include #include "./include/postgresql/server/libpq-fe.h" int main(int argc, char **argv){ const char *conninfo; PGconn *conn; PGresult *res; const char *buffer = "1,Jack\n2,Rose\n3,Tom"; if (argc > 1){ conninfo = argv[1]; }else{ conninfo = "host=10.185.180.161 port=8000 dbname=postgres user=jack password=Gauss_234"; } conn = PQconnectdb(conninfo); if (PQstatus(conn) != CONNECTION_OK){ fprintf(stderr, "連接數據庫失敗: %s",PQerrorMessage(conn)); }else{ printf("連接數據庫成功!\n"); } res=PQexec(conn,"COPY test FROM STDIN DELIMITER ',';"); if(PQresultStatus(res) != PGRES_COPY_IN){ fprintf(stderr, "copy數據出錯1: %s",PQresultErrorMessage(res)); }else{ int len = strlen(buffer); if(PQputCopyData(conn,buffer,len) == 1){ if(PQputCopyEnd(conn,NULL) == 1){ res = PQgetResult(conn); if(PQresultStatus(res) == PGRES_COMMAND_OK){ printf("copy數據成功!\n"); }else{ fprintf(stderr, "copy數據出錯2: %s",PQerrorMessage(conn)); } }else{ fprintf(stderr, "copy數據出錯3: %s",PQerrorMessage(conn)); } }else{ fprintf(stderr, "copy數據出錯4: %s",PQerrorMessage(conn)); } } PQclear(res); PQfinish(conn); return 0; }
EI企業智能 Gauss AP 數據倉庫服務 GaussDB(DWS) HUAWEI CONNECT
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。
下一篇:OKR失敗的五個關鍵因素:推行OKR失敗之后,老板應該明白的道理(okr實施五大困境與解決方案課后測試)