数据库:插入、更新记录(insert into, ..., on duplicate key)
2018-01-24 15:52
447 查看
接收到tick数据,合成成实时1分钟的K线。
不是1分钟K线来一根,而是在1分钟内,最后一根K线的 H、L、C 在不断变化。
用 insert into 同时 on duplicate key,就能解决这个问题。
MySQL
主键要设置为 (time, code),这两个字段作为联合PK。
PostgreSQL
不是1分钟K线来一根,而是在1分钟内,最后一根K线的 H、L、C 在不断变化。
用 insert into 同时 on duplicate key,就能解决这个问题。
MySQL
sql = """INSERT INTO {TABLE_NAME} ({time_col_name}, `code`, `open`, `high`, `low`, `close`, `volume`) VALUES ('{RT_TIME}', '{code}', {open}, {high}, {low}, {close}, {volume}) ON DUPLICATE KEY UPDATE `high` = IF (`high` > {high},`high`,{high}), `low` = IF (`low` < {low},`low`, {low}), `close` = {close}, `volume` = {volume}; """.format(**format_data)
主键要设置为 (time, code),这两个字段作为联合PK。
PostgreSQL
sql = """INSERT INTO {TABLE_NAME} (trade_date, ticker, open, high, low, close) VALUES ('{RT_TIME}', '{ticker}', {open}, {high}, {low}, {close}) ON CONFLICT (trade_date, ticker) DO UPDATE SET high = case when {TABLE_NAME}.high < excluded.high then excluded.high when {TABLE_NAME}.high >= excluded.high then {TABLE_NAME}.high end, low = case when {TABLE_NAME}.low > excluded.low then excluded.low when {TABLE_NAME}.low <= excluded.low then {TABLE_NAME}.low end, close = {close};""".format(**format_data)如此啰嗦,因为暂时不会PG的IF函数……
相关文章推荐
- MySql避免"重复插入记录"的方法(INSERT ignore into,Replace into,ON DUPLICATE KEY UPDATE)
- INSERT INTO .. ON DUPLICATE KEY更新多行记录 转
- INSERT INTO .. ON DUPLICATE KEY更新多行记录
- INSERT INTO .. ON DUPLICATE KEY更新多行记录
- INSERT INTO .. ON DUPLICATE KEY更新多行记录
- mysql重复插入insert时更新ON DUPLICATE KEY UPDATE
- SQL语句实现不存在即插入,存在则increase某字段的功能insert into … on duplicate key update
- ON DUPLICATE KEY UPDATE批量插入记录,遇到重复记录则为自动更新
- MySql中4种批量更新的方法update table2,table1,批量更新用insert into ...on duplicate key update, 慎用replace into.
- MySql中4种批量更新的方法update table2,table1,批量更新用insert into ...on duplicate key update, 慎用replace into.
- mysql重复插入insert时更新ON DUPLICATE KEY UPDATE
- MySQL记录存在则更新,不存在插入on duplicate key update
- MySql 的ON DUPLICATE KEY UPDATE函数(有记录就更新,没记录就插入)
- (5) MySQL INSERT插入条件判断:如果不存在则插入 || MySQL中replace into ||INSERT INTO … ON DUPLICATE KEY U...
- ON DUPLICATE KEY UPDATE 当记录不存在时插入,当记录存在时更新
- (转载)[MySQL技巧]INSERT INTO… ON DUPLICATE KEY UPDATE
- Mysql中“Insert into xxx on duplicate key update”问题
- MySql避免重复插入记录方法(ignore,Replace,ON DUPLICATE KEY UPDATE)
- [原] insert into … on duplicate key update / replace into 多行数据
- Mysql replace into 与 insert into on duplicate key update 的区别