这是用来实现两个MySQL数据库中的具有相同字段表的增量同步。

  • 支持按照某种格式增量获取表中的待同步数据。
  • 支持按照列名称向数据库的表中批量插入待同步的数据。

安装

go get -u github.com/cuckoopark/dbsync

数据库配置

update_time

这个字段需要在数据更新时,自动更新为当前时间戳,用于记录数据更新的时间。

update_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP

获取增量更新数据

可以批量获取一张表的最新更新的数据,方法如下:

func DoFetch(db *sql.DB, tableName string, options FetchOptions) (FetchResult, error)

其中参数说明:

dbtableNameoptionsFetchOptionsIgnoreFieldsPageNumberPageSizeUpdateTimeFieldNameupdate_timeLastUpdateTimeWhereSqlStmt[UpdateTimeFieldName] > ?ANDWhereSqlArgs
FetchResult
columnscolumn_typesdata
time.Time

插入单条更新数据

接口为:

func DoUpdateOne(db executor, tableName string, data []interface{}, options UpdateOptions) error

其中参数说明:

dbtableNamedataoptions.ColumnsoptionsUpdateOptionsColumnsDoFetchColumnTypesDoFetchFixedFieldsDoFetchUniqueFields

该接口无返回值。

INSERT INTO ... VALUES (...) ON DUPLICATE KEY UPDATE ...REPLACE INTO

批量插入更新数据

接口为:

func DoUpdate(db *sql.DB, tableName string, data [][]interface{}, options UpdateMultiOptions) error
options
BatchCount