使用csv文件将数据插入clickhouse,并使用curl | bash将“&”添加到第一条记录

ctehm74n  于 2021-07-15  发布在  ClickHouse
关注(0)|答案(1)|浏览(393)

我在尝试使用csv文件插入数据到使用curl的clickhouse时遇到问题,第一个值是添加一些字符,如下所示:

┌─name─ ┬─lastname─┐
│&'Mark'│ Olson    │
│ Joe   │ Robins   │
└────── ┴──────────┘

我的csv文件正常,如下所示:

'Mark','Olson'
'Joe','Robins'

如您所见,该表将第一条记录中的第一个值作为 &'Mark' 这是我在bash中的代码

query="INSERT INTO Myschema.persons FORMAT CSV"
cat ${csv} | curl -X POST -d "$query" $user:$password@localhost:8123 --data-binary @-

你知道有什么问题吗?
谢谢

daolsyd0

daolsyd01#

我认为您应该使用以下格式,其中查询是url的一部分

cat *.csv |curl http://localhost:8123/?query=INSERT%20INTO%20Myschema.persons%20FORMAT%20CSV' --data-binary @-

我不知道为什么你的curl不工作,但我最好的猜测是clickhouse有解析规则,不能使用你指定的格式, ${query} 以及 ${csv} 两者都是post的参数,在最终的httpurl中被“&”追加,而解析clickhouse无法考虑这种情况。
引用clickhouse文档-
您可以在post body或url参数中发送查询本身。

post方法传输数据是insert查询所必需的。在这种情况下,可以在url参数中写入查询的开头,并使用post传递要插入的数据。例如,要插入的数据可以是与mysql分开的标签转储。通过这种方式,insert查询替换了从mysql加载数据的local infile。
查看此处了解更多详细信息和示例-https://clickhouse.yandex/docs/en/interfaces/http_interface/

相关问题