mirror of
https://github.com/ClickHouse/ClickHouse.git
synced 2024-11-19 22:22:00 +00:00
2eff364e63
* CLICKHOUSE-4063: less manual html @ index.md * CLICKHOUSE-4063: recommend markdown="1" in README.md * CLICKHOUSE-4003: manually purge custom.css for now * CLICKHOUSE-4064: expand <details> before any print (including to pdf) * CLICKHOUSE-3927: rearrange interfaces/formats.md a bit * CLICKHOUSE-3306: add few http headers * Remove copy-paste introduced in #3392 * Hopefully better chinese fonts #3392 * get rid of tabs @ custom.css * Apply comments and patch from #3384 * Add jdbc.md to ToC and some translation, though it still looks badly incomplete * minor punctuation * Add some backlinks to official website from mirrors that just blindly take markdown sources * Do not make fonts extra light * find . -name '*.md' -type f | xargs -I{} perl -pi -e 's//g' {} * find . -name '*.md' -type f | xargs -I{} perl -pi -e 's/ sql/g' {} * Remove outdated stuff from roadmap.md * Not so light font on front page too * Refactor Chinese formats.md to match recent changes in other languages * Update some links on front page * Remove some outdated comment * Add twitter link to front page * More front page links tuning * Add Amsterdam meetup link * Smaller font to avoid second line * Add Amsterdam link to README.md * Proper docs nav translation * Back to 300 font-weight except Chinese * fix docs build * Update Amsterdam link * remove symlinks * more zh punctuation * apply lost comment by @zhang2014 * Apply comments by @zhang2014 from #3417
2.6 KiB
2.6 KiB
INSERT
正在添加数据。
基本查询格式:
INSERT INTO [db.]table [(c1, c2, c3)] VALUES (v11, v12, v13), (v21, v22, v23), ...
此查询能够指定字段的列表来插入 [(c1, c2, c3)]
。 在这种情况下, 剩下的字段用如下来填充:
- 从表定义中指定的
DEFAULT
表达式中计算出值。 - 空字符串, 如果
DEFAULT
表达式没有定义。
如果 strict_insert_defaults=1, 没有 DEFAULT
定义的字段必须在查询中列出.
在任何ClickHouse所支持的格式上 format 数据被传入到 INSERT中. 此格式必须被显式地指定在查询中:
INSERT INTO [db.]table [(c1, c2, c3)] FORMAT format_name data_set
例如, 如下的查询格式与基本的 INSERT ... VALUES
版本相同:
INSERT INTO [db.]table [(c1, c2, c3)] FORMAT Values (v11, v12, v13), (v21, v22, v23), ...
ClickHouse 在数据之前, 删除所有空格和换行(如果有)。 当形成一个查询时, 我们推荐在查询操作符之后将数据放入新行(如果数据以空格开始, 这是重要的)。
示例:
INSERT INTO t FORMAT TabSeparated
11 Hello, world!
22 Qwerty
你能够单独从查询中插入数据,通过命令行或 HTTP 接口. 进一步信息, 参见 "Interfaces".
Inserting The Results of SELECT
INSERT INTO [db.]table [(c1, c2, c3)] SELECT ...
在 SELECT语句中, 根据字段的位置来映射。 然而, 在SELECT表达式中的名称和表名可能不同。 如果必要, 可以进行类型转换。
除了值以外没有其他数据类型允许设置值到表达式中, 例如 now()
, 1 + 2
, 等。 值格式允许使用有限制的表达式, 但是它并不推荐, 因为在这种情况下, 执行了低效的代码。
不支持修改数据分区的查询如下: UPDATE
, DELETE
, REPLACE
, MERGE
, UPSERT
, INSERT UPDATE
。
然而, 你能够使用 ALTER TABLE ... DROP PARTITION
来删除旧数据。
Performance Considerations
INSERT
通过主键来排序数据, 并通过月份来拆分数据到每个分区中。 如果插入的数据有混合的月份, 会显著降低INSERT
插入的性能。 应该避免此类操作:
- 大批量地添加数据, 如每次 100,000 行。
- 在上传数据之前, 通过月份分组数据。
下面操作性能不会下降:
- 数据实时插入。
- 上传的数据通过时间来排序。