这是用来实现两个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