标签: upsert

我如何在Redis中进行upsert(替换)操作?(作为流水线)

Upsert(替换)

  • 如果存在则更新
  • 插入如果不存在

(使用主键作为流水线)

upsert redis

2
推荐指数
1
解决办法
6369
查看次数

批量更新插入 SQL Server 2005

有没有办法在 SQL Server 2005 中批量更新插入?类似于 2008 年的 MERGE 的东西将是完美的。我有一张桌子作为临时工作区,需要在会话完成时与主表协调。在 2008 年,merge 对此会做得很好,但我见过的唯一 2005 年方法是针对单个 upserts,而不是批量。想法?

sql t-sql sql-server-2005 upsert

2
推荐指数
1
解决办法
1773
查看次数

Ruby:在哈希中"upserting"数组值的更惯用的方式

我有一个人的哈希,每个人都拥有一系列的价值观.

如果散列中不存在某个人,我想创建一个带有值的新数组,并将其添加到散列中.如果它们存在,我想找到相应的数组并将项添加到它.

对于这样一个简单的操作(基本上是upsert),这段代码看起来有点啰嗦.有没有更惯用的写作方式?

people = {}

person_values = people.fetch(name, [])
person_values << item
people[name] = person_values
Run Code Online (Sandbox Code Playgroud)

ruby arrays coding-style hashmap upsert

2
推荐指数
1
解决办法
232
查看次数

mongoengine 批量更新插入一批记录?

我想upsert(update or insert) a list of record,其实我知道mongodbbulk从mongodb3.0开始就支持操作了。

我想知道是否mongoengine支持bulk upsert operationmongoengine (0.10.0)

如果没有,我想知道如何upsert记录列表,我知道mongoengine支持这样的insert批处理:

class User(Document):
    username = StringField(required=True)
    password = StringFiedl(required=True)
    meta = {'db_alias': 'user_info', 'collection': 'user', 
             'indexes': [{'fields': ['username'], 'unique': True}]
           }

def save_users(self, users):
    Users.objects.insert(users) # raise mongoengine.errors.NotUniqueError
Run Code Online (Sandbox Code Playgroud)

python upsert mongodb mongoengine

2
推荐指数
1
解决办法
2692
查看次数

为什么不更新插入在 Cassandra 中创建墓碑?

根据有关 Tombstone 的问题,为什么 upserts 不创建墓碑?根据 datastax 文档,数据如何更新?对于每个 upsert,cassandra 将删除后插入,因为插入的新时间戳会覆盖旧时间戳。旧时间戳数据必须标记为与墓碑相关的删除。

为什么我们有相互矛盾的陈述?否则我在这里遗漏了什么?

用例:在 Cassandra 中使用唯一键 (uuid) 插入数据,并且此数据中的某些列经常更新。您推荐哪种方法?

  1. 在插入查询中插入具有新列值的相同数据。
  2. 使用更新查询中的新列值根据给定的 uuid 更新现有记录。

哪种方法会或不会创建墓碑?Cassandra 如何处理这两个查询?

upsert cassandra tombstone datastax

2
推荐指数
1
解决办法
2744
查看次数

IDocumentClient.UpsertDocumentAsync不会更新,它会插入重复的ID

我在C#中有一个VS2017解决方案,我正在使用IDocumentClient.UpsertDocumentAsync将一些文档嵌入到我的cosmosdb documentdb集合中.但是我注意到它实际上创建了具有相同id的新文档,而集合中已经存在具有该id的文档.

现在,在插入具有相同id的新文档之后,查询结果如下所示:

select * from c where c.id = "aaaa-bbbb-cccc"

[
    {
        "id": "aaaa-bbbb-cccc",
        "firstname": "john",
        "lastname": "doe"
    },
    {
        "id": "aaaa-bbbb-cccc",
        "firstname": "john",
        "lastname": "doe",
        "age": "35"
    }
]
Run Code Online (Sandbox Code Playgroud)

我对这种行为很困惑; 也许我没有正确理解"upsert"的定义.如果有人能为我澄清这一点,我将不胜感激.

c# upsert azure azure-cosmosdb

2
推荐指数
2
解决办法
2690
查看次数

重复密钥更新增值

我有一个带有架构的表:

storeId varchar(255),
ttl int,
date varchar(255),
bytes bigint(255),
UNIQUE KEY storeId_date_index (storeId, date)
Run Code Online (Sandbox Code Playgroud)

我想插入一行(如果不存在),否则更新它。

对于我点击的每个重复键,我想将旧值与新值相加。这个命令怎么可能呢ON DUPLICATE KEY UPDATE

这是我到目前为止所拥有的:

insert into table (storeId, date, ttl, bytes) 
values 
('477866', '2019-02-05', 54543543, 100),
('6301', '2019-02-05', 54543543, 999999),
('12345', '2019-02-05', 54543543, 999999)
ON DUPLICATE KEY UPDATE
bytes = oldval + newval # sum old value with new value where storeId and date match in the values
Run Code Online (Sandbox Code Playgroud)

mysql sql syntax upsert sql-insert

2
推荐指数
1
解决办法
2299
查看次数

POSTGRESQL:错误:没有与 ON CONFLICT 规范匹配的唯一或排除约束

在此处输入图片说明我正在尝试使用以下查询对名为“message_payload”的表执行 upsert 操作,但出现错误:

错误:没有与 ON CONFLICT 规范 SQL 状态匹配的唯一或排除约束:42P10

询问:

    INSERT INTO public.error_message(
    id, created_by, created_dt, modified_by, modified_dt, attempt, message_headers, 
    message_main_topic, message_payload, message_status, message_status_code)
        VALUES (51, null, null, null, null, 1, '{
        "jsonContent": {
            "content-length": "1635",
            "message_status_code": "417",
            "cookie": "JSESSIONID=279AF4C174E6192BDAB11A067768BBD5",
            "postman-token": "f0f33e86-498f-452a-aaf6-18eb84dc5907",
            "kafka_timestampType": "CREATE_TIME",
            "message_id": "21",
            "kafka_receivedMessageKey": "null",
            "kafka_receivedTopic": "error-topic",
            "accept": "*/*",
            "kafka_offset": "33",
            "kafka_consumer": "org.apache.kafka.clients.consumer.KafkaConsumer@5091bb5f",
            "host": "localhost:8082",
            "content-type": "application/json",
            "connection": "keep-alive",
            "cache-control": "no-cache",
            "kafka_receivedPartitionId": "0",
            "kafka_receivedTimestamp": "1552305428711",
            "accept-encoding": "gzip, deflate",
            "message_main_topic": "ldarsQCustomStatistics.1",
            "user-agent": "PostmanRuntime/7.6.1"
        }
    }', 'ldarsQCustomStatistics.1', '{
        "jsonContent": …
Run Code Online (Sandbox Code Playgroud)

postgresql upsert

2
推荐指数
1
解决办法
2299
查看次数

在 Sqlite 3.34 中执行 UPSERT 时出错 - 错误:靠近“DO”:语法错误

我正在尝试将每日 CSV 加载文件加载到main表中,以便插入所有新记录并更新所有现有记录。我正在使用UPSERTSqlite 的功能来实现此目的。

这是我的 shell 脚本。


LOAD_FILE="/tmp/main.csv"
LOAD_TABLE="tbl_tmp_main"
MAIN_TABLE="tbl_main"
COLUMNS="t_id, t_col1, t_col2"


CREATE_TABLE_QUERY="DROP TABLE IF EXISTS $LOAD_TABLE; CREATE TABLE $LOAD_TABLE AS SELECT $COLUMNS FROM $MAIN_TABLE WHERE false"
LOAD_TABLE_QUERY=".separator ','\n.import '$LOAD_FILE' $LOAD_TABLE"
UPSERT_TABLE_QUERY="
    INSERT INTO $MAIN_TABLE($COLUMNS) SELECT $COLUMNS FROM $LOAD_TABLE
    ON CONFLICT(t_id) DO UPDATE
    SET
        t_col1 = excluded.t_col1,
        t_col2 = excluded.t_col2
    ;
"

echo ""
echo "$CREATE_TABLE_QUERY" | sqlite3 mydatabase.sqlite3            # <-- This works
echo "[INFO] Temporary Table Created."

echo "$LOAD_TABLE_QUERY" | sqlite3 mydatabase.sqlite3              # <-- …
Run Code Online (Sandbox Code Playgroud)

sqlite upsert insert-update

2
推荐指数
1
解决办法
952
查看次数

如何在一个语句中使用单个值对多行进行 UPSERT?

我创建了下表:

CREATE TABLE t1(
a   INT UNIQUE, 
b   varchar(100) NOT NULL,
c   INT, 
d   INT DEFAULT 0,  
PRIMARY KEY (a,b));
Run Code Online (Sandbox Code Playgroud)

在单行上,此 SQL 语句效果很好(SQL 是在代码中生成的):

INSERT INTO t1 (a, b, c, d)
VALUES($params.1, '${params.2}', $params.3, params.4) 
ON CONFLICT (a,b) DO 
UPDATE SET d=params.4
Run Code Online (Sandbox Code Playgroud)

是否可以一次更新插入多行?对于每次更新, 的值params.4都是不同的。

var sqlStr = 'INSERT INTO t1 (a, b, c, d) VALUES '
for(let i =0 i < params.length; i++){
   sqlStr += `(${params[i].1}, '${params[i].2}', ${params[i].3}, ${params[i].4}),`
   
}
sqlStr = sqlStr.substring(0, sqlStr .length - 2) +')'; …
Run Code Online (Sandbox Code Playgroud)

sql postgresql upsert

2
推荐指数
1
解决办法
3567
查看次数