TimonKK / clickhouse

NodeJS client for ClickHouse
Apache License 2.0
220 stars 122 forks source link

Can not insert with value = null #150

Open phuc49 opened 8 months ago

phuc49 commented 8 months ago
static mapRowAsObject(fieldList, row) {
    return fieldList
        .map(f => {
            return encodeValue(false, row[f] != null ? row[f] : '', 'TabSeparated');
        })
        .join('\t');
}

if value = null why dont insert that null value to db

Blaumaus commented 7 months ago

Maybe try inserting it as a 'NULL' string? Here's a simplified approach on how I did it in my app:

const dto = (
  psid: string,
  // ....
): Array<string | number> => {
  return [
    psid,
    ....
  ]

// call it like
dto(params.psid)

// or
dto('NULL')
}

then you can save it like:

const query = `INSERT INTO table (*) VALUES ${_join(data, ',')}`
      try {
        await clickhouse.query(query).toPromise()
      } catch (e) {
        console.error(`[CRON WORKER] Error whilst saving log data: ${e}`)
      }
Blaumaus commented 7 months ago

and eventually it should store the data as null:

Screenshot 2023-12-16 at 20 50 34