* split up select.md * array-join.md basic refactoring * distinct.md basic refactoring * format.md basic refactoring * from.md basic refactoring * group-by.md basic refactoring * having.md basic refactoring * additional index.md refactoring * into-outfile.md basic refactoring * join.md basic refactoring * limit.md basic refactoring * limit-by.md basic refactoring * order-by.md basic refactoring * prewhere.md basic refactoring * adjust operators/index.md links * adjust sample.md links * adjust more links * adjust operatots links * fix some links * adjust aggregate function article titles * basic refactor of remaining select clauses * absolute paths in make_links.sh * run make_links.sh * remove old select.md locations * translate docs/es * translate docs/fr * translate docs/fa * remove old operators.md location * change operators.md links * adjust links in docs/es * adjust links in docs/es * minor texts adjustments * wip * update machine translations to use new links * fix changelog * es build fixes * get rid of some select.md links * temporary adjust ru links * temporary adjust more ru links * improve curly brace handling * adjust ru as well * fa build fix * ru link fixes * zh link fixes * temporary disable part of anchor checks
3.6 KiB
machine_translated | machine_translated_rev | toc_priority | toc_title |
---|---|---|---|
true | 72537a2d52 |
34 | INSERT INTO |
INSERT
Veri ekleme.
Temel sorgu biçimi:
INSERT INTO [db.]table [(c1, c2, c3)] VALUES (v11, v12, v13), (v21, v22, v23), ...
Sorgu eklemek için sütunların bir listesini belirtebilirsiniz [(c1, c2, c3)]
. Bu durumda, sütunların geri kalanı ile doldurulur:
- Hesaplanan değerler
DEFAULT
tablo tanımında belirtilen ifadeler. - Sıfırlar ve boş dizeler, eğer
DEFAULT
ifadeler tanımlanmamıştır.
Eğer strict_ınsert_defaults = 1, sahip olmayan sütunlar DEFAULT
tanımlanan sorguda listelenmelidir.
Veri herhangi bir İNSERT geçirilebilir biçimli ClickHouse tarafından desteklenmektedir. Biçim sorguda açıkça belirtilmelidir:
INSERT INTO [db.]table [(c1, c2, c3)] FORMAT format_name data_set
For example, the following query format is identical to the basic version of INSERT … VALUES:
INSERT INTO [db.]table [(c1, c2, c3)] FORMAT Values (v11, v12, v13), (v21, v22, v23), ...
ClickHouse, veriden önce tüm boşlukları ve bir satır beslemesini (varsa) kaldırır. Bir sorgu oluştururken, sorgu işleçlerinden sonra verileri yeni bir satıra koymanızı öneririz (veriler boşluklarla başlarsa bu önemlidir).
Örnek:
INSERT INTO t FORMAT TabSeparated
11 Hello, world!
22 Qwerty
Komut satırı istemcisini veya HTTP arabirimini kullanarak verileri sorgudan ayrı olarak ekleyebilirsiniz. Daha fazla bilgi için bölüme bakın “Arabirimler”.
Kısıtlamalar
Tablo varsa kısıtlamalar, their expressions will be checked for each row of inserted data. If any of those constraints is not satisfied — server will raise an exception containing constraint name and expression, the query will be stopped.
Sonuçları ekleme SELECT
INSERT INTO [db.]table [(c1, c2, c3)] SELECT ...
Sütunlar, SELECT yan tümcesindeki konumlarına göre eşleştirilir. Ancak, SELECT ifadesi ve INSERT için tablo adları farklı olabilir. Gerekirse, tip döküm yapılır.
Değerler dışındaki veri biçimlerinin hiçbiri, aşağıdaki gibi ifadelere değerler ayarlamasına izin vermez now()
, 1 + 2
ve bu yüzden. Değerler biçimi, ifadelerin sınırlı kullanımına izin verir, ancak bu önerilmez, çünkü bu durumda verimsiz kod yürütme için kullanılır.
Veri bölümlerini değiştirmek için diğer sorgular desteklenmiyor: UPDATE
, DELETE
, REPLACE
, MERGE
, UPSERT
, INSERT UPDATE
.
Ancak, eski verileri kullanarak silebilirsiniz ALTER TABLE ... DROP PARTITION
.
FORMAT
yan tümcesi sorgu sonunda belirtilmelidir eğer SELECT
yan tümcesi tablo işlevi içerir girdi().
Performans Konuları
INSERT
giriş verilerini birincil anahtarla sıralar ve bunları bir bölüm anahtarı ile bölümlere ayırır. Bir kerede birkaç bölüme veri eklerseniz, bu veri tabanının performansını önemli ölçüde azaltabilir. INSERT
sorgu. Bunu önlemek için:
- Bir seferde 100.000 satır gibi oldukça büyük gruplar halinde veri ekleyin.
- Clickhouse'a yüklemeden önce verileri bir bölüm anahtarıyla gruplandırın.
Eğer performans azalmaz:
- Veri gerçek zamanlı olarak eklenir.
- Genellikle zamana göre sıralanır veri yükleyin.