本文介紹如何用INSERT INTO 語句向云數據庫 ClickHouse數據表中插入數據。
基本語法
INSERT INTO 語句基本格式如下:
INSERT INTO [db.]table [(c1, c2, c3)] VALUES (v11, v12, v13), (v21, v22, v23), ...
對于存在于表結構中但不存在于插入列表中的列,它們將會按照如下方式填充數據:
如果存在DEFAULT表達式,根據DEFAULT表達式計算被填充的值。
如果沒有定義DEFAULT表達式,則填充零或空字符串。
使用SELECT的結果寫入
語法結構如下:
INSERT INTO [db.]table [(c1, c2, c3)] SELECT ...
寫入的列與SELECT的列的對應關系是使用位置來進行對應的,它們在SELECT表達式與INSERT中的名稱可以是不同的。需要對它們進行對應的類型轉換。
除了VALUES格式之外,其他格式中的數據都不允許出現諸如now(),1 + 2等表達式。VALUES格式允許您有限度的使用這些表達式,但是不建議您這么做,因為執行這些表達式很低效。
影響性能的注意事項
在執行INSERT時將會對寫入的數據進行一些處理,比如按照主鍵排序、按照月份對數據進行分區等。如果在您的寫入數據中包含多個月份的混合數據時,將會顯著地降低INSERT的性能。為了避免這種情況,通常采用以下方式:
數據總是以盡量大的batch進行寫入,如每次寫入100,000行。
數據在寫入ClickHouse前預先對數據進行分組。
在以下的情況下,性能不會下降:
數據總是被實時地寫入。
寫入的數據已經按照時間排序。
文檔內容是否對您有幫助?