postgresql 与C++数据类型对比

问题背景说明

在进行数据存储的时候, uint64_t 数据类型在数据库中没有对应的格式与之对应
需要找到 c++ 与 postgresql 数据库中结构的对照表

uint64_t 格式如果在数据库中存储

如果数据确实没有那么大,直接使用 int8 勉强凑合,只使用63位来存储数据。
如果数据确实很大,考虑使用 numeric

postgresql / sql / c++ 类型对照表

可以根据这个表格选择数据库表的建立
数据读取后要转换的格式。

OID OID NUM SQL Type C++ Param C++ Result
BOOLOID 16 boolean bool bool
BYTEAOID 17 bytea std::vector<uint_8> std::vector<uint_8>
CHAROID 18 "char" char char
NAMEOID 19 name const char * std::string
INT8OID 20 bigint int64_t int64_t
INT2OID 21 smallint int16_t int16_t
INT2VECTOROID 22 int2vector
INT4OID 23 integer int32_t int32_t
REGPROCOID 24 regproc
TEXTOID 25 text const char * std::string
OIDOID 26 oid
TIDOID 27 tid
XIDOID 28 xid
CIDOID 29 cid
OIDVECTOROID 30 oidvector
JSON8OID 114 json
POINTOID 600 point
LSEGOID 601 lseg
PATHOID 602 path
BOXOID 603 box
POLYGONOID 604 polygon
LINEOID 628 line
FLOAT4OID 700 real float float
FLOAT8OID 701 double precision double double
ABSTIMEOID 702 abstime
RELTIMEOID 703 reltime
TINTERVALOID 704 tinterval
UNKNOWNOID 705 unknown
CIRCLEOID 718 circle
CASHOID 790 money
INETOID 869 inet
CIDROID 650 cidr
BPCHAROID 1042 character const char * std::string
VARCHAROID 1043 character varying const char * std::string
DATEOID 1082 date db::postgres::date_t db::postgres::date_t
TIMEOID 1083 time without time zone db::postgres::time_t db::postgres::time_t
TIMESTAMPOID 1114 timestamp without time zone db::postgres::timestamp_t db::postgres::timestamp_t
TIMESTAMPTZOID 1184 timestamp with time zone db::postgres::timestamptz_t db::postgres::timestamptz_t
INTERVALOID 1186 interval db::postgres::interval_t db::postgres::interval_t
TIMETZOID 1266 time with time zone db::postgres::timetz_t db::postgres::timetz_t
ZPBITOID 1560 bit
VARBITOID 1562 bit varying
NUMERICOID 1700 numeric

Other bindings

SQL Type C++ Param C++ Result
smallserial n/a int16_t
serial n/a int32_t
bigserial n/a int64_t
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容