clickhouse - 如何将带有 YYYYMMDD 列的 CSV 文件导入 ClickHouse 中的 DATE 列
问题描述
我想将一个包含一列的文件CSV
导入YYYYMMDD
到. 的样本。我意识到只有按原样格式导入一列(仅在年、月和日之间使用“”)。我无法更改存储在. 请让我知道一个简单的方法或命令来导入数百个文件,或者我可以在哪里更改我的服务器中的配置以接受格式而不是?DATE
ClickHouse
CSV
content: 20191231
ClickHouse
DATE
CSV
YYYY-MM-DD
-
CSV
http server
CSV
YYYYMMDD
http server
clickhouse
YYYYMMDD
YYYY-MM-DD
我已经添加了一个新列,导入了所有文件并更新了表格。请参阅下面的查询。字段 ' olddatefield
' 是 aSTRING
并且 ' newdatefield
' 是 DATE 字段。
ALTER TABLE test ADD COLUMN newdatefield Date AFTER olddatefield;
ALTER TABLE test
UPDATE newdatefield = toDate(concat(substring(olddatefield, 1, 4), '-' , substring(olddatefield, 5, 2), '-' , substring(olddatefield, 7, 2)))
WHERE olddatefield = '20191231';
它工作得很好,但是有数千个不同的文件DATES
要导入,我不想编辑数千个'alter table'
查询。
解决方案
它需要依赖parseDateTimeBestEffort函数:
SELECT toDate(parseDateTimeBestEffort('20191231')) AS date
/*
┌───────date─┐
│ 2019-12-31 │
└────────────┘
*/
然后使用input -table 函数需要更改数据上传方式来修复相关字段:
cat data.csv \
| clickhouse-client --query="INSERT INTO test SELECT toDate(parseDateTimeBestEffort(date)) AS date, id FROM input('date String, id Int32') FORMAT CSV";
数据.csv
20191231, 1
20200101, 2
推荐阅读
- r - 替换数据框列中的值
- c# - 如何更新由 webhook 触发的 azure 函数中的记录?
- npm - 无法安装 expo-cli ,抛出错误并花费大量时间
- c# - 是否可以以编程方式生成包含组织结构图的 Excel 文件?
- c++ - dtor 中的这个 unique_lock 是否有任何用途?
- javascript - 使用 Materialize-CSS 和 React 的 TypeError
- arrays - 如何改变这个 foreach 就像 for (i=0;i
我是使用 ejs 的新手,我想将我的数据库数据传递给我的 ejs 文件,但我想将 forEach 语法更改为 for(i=0;i
我找到了一个代码来显示它,但它带来了我所有的数据库数据,我只想从我的数据库中传递 4 个数据
这是我的 server.js 代码
var hotelS
- python - 如何根据字典的值(也可以是列表)动态生成 SQLite 插入查询?
- git - git 不会使用 pull 检索远程标签,但可以使用 fetch
- javascript - 是否有任何 npm 包用于计算 doc/docx 文件的字数?