玛卡巴卡的卡巴卡玛 发表于 2024-7-10 21:38:27

CSV数据导入到ClickHouse数据库

问题形貌:手头上有一个数据量较大的CSV文件,盼望导入到指定的ClickHouse数据中,ClickHouse摆设在服务器中。
   解决方案:通常来说,数据量较少的CSV文件可以直接通过DBeaver软件的可视化界面导入数据。
若数据量较大,则发起将CSV文件传输到clickhouse所在服务器上,利用命令将数据导入到数据库中指定的表中。(提前在数据库中根据字段创建表结构)
step1:在数据库中创建对应的表

方法一:可以借助DBeaver的可视化界面,在内里编写SQL建表语句
方法二:在服务器中,进入clickhouse交互式界面。在交互式界面编写SQL语句建表。
clickhouse-client --host=127.0.0.1 --port 9000 --user default
step2:导入CSV数据

在服务器的命令行界面,实行如下语句:


[*] 导入的CSV文件没有字段名称时:
cat csv文件路径 | clickhouse-client --query="INSERT INTO 数据库.表名 FORMAT CSV"
[*] 导入的CSV文件有字段名称时
cat csv文件路径 | clickhouse-client --query="INSERT INTO 数据库.表名 FORMAT CSVWithNames"
[*] 假如想要跳过首行,或者特定行,则可以利用如下命令:(1d表示跳过第一行)
sed '1d' csv文件路径 | clickhouse-client --query="INSERT INTO 数据库.表名 FORMAT CSV"
[*] (紧张)clickhouse-client INSERT CSV/TSV时跳过错误行
在利用clickhouse-client向ck中导入csv文件时,当csv中有个别行数据格式错误时,整个文件就插入失败了,常常会导致丢数据。
案例:指定允许错误条数为10000,错误比率为0.1
cat a.csv | clickhouse-client --host 127.0.0.1 --port 9000 --database default \ --user default --query="INSERT INTO tb_a FORMAT CSVWithNames " \ --format_csv_delimiter="|" --input_format_allow_errors_num=10000 \ --input_format_allow_errors_ratio=0.1
[*] clickhouse官方保举语句:在clickhouse-client客户端的安装目次下实行如下命令。
cat <当地文件名> | ./clickhouse-client --host=<数据库连接地址> --port=<TCP端口号> --user=<数据库账号> --password=<数据库账号的暗码> --query="INSERT INTO <ClickHouse表名> FORMAT <当地文件格式>";

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: CSV数据导入到ClickHouse数据库