
# ClickHouse数据导入导出
#### 使用ClickHouse客户端导入导出数据
本章节主要介绍使用ClickHouse客户端导入导出文件数据的基本语法和使用说明。
- CSV格式数据导入 **clickhouse client --host** *主机名/ClickHouse实例I* *P地址* **--database** *数据库名* **--port** *端口号* **--secure --format_csv_delimiter="** *csv文件数据分隔符* **" --query="INSERT INTO** *数据表名* **FORMAT CSV" \<** *csv文件所在主机路径*
  使用示例：
  ```
  clickhouse client --host 10.5.208.5 --database testdb --port 9440 --secure --format_csv_delimiter="," --query="INSERT INTO testdb.csv_table FORMAT CSV" < /opt/data
  ```
  数据表需提前创建好。
  
- CSV格式数据导出
  ![](https://support.huaweicloud.com/cmpntguide-mrs/public_sys-resources/caution_3.0-zh-cn.png)
  导出数据为CSV格式的文件，可能存在CSV注入的安全风险，请谨慎使用。
  **clickhouse client --host** *主机名/ClickHouse实例IP地址* **--database** *数据库名* **--port** *端口号* **-m --secure --query=** "**SELECT \*** **FROM** *表名* " \> *csv文件导出路径*
  使用示例：
  ```
  clickhouse client --host 10.5.208.5 --database testdb --port 9440 -m --secure --query="SELECT * FROM test_table" > /opt/test
  ```
  
- parquet格式数据导入 **cat** *parquet格式文件* **\| clickhouse client --host** *主机名/ClickHouse实例IP* **--database** *数据库名* **--port** *端口号* **-m --secure --query="INSERT INTO** *表名* **FORMAT Parquet"**
  使用示例：
  ```
  cat /opt/student.parquet | clickhouse client --host 10.5.208.5 --database testdb --port 9440 -m --secure --query="INSERT INTO parquet_tab001 FORMAT Parquet"
  ```
  
- parquet格式数据导出 **clickhouse client --host** *主机名/ClickHouse实例IP* **--database** *数据库名* **--port** *端口号* **-m --secure --query=** "**select** \* **from** *表名* **FORMAT Parquet** " \> *parquet格式文件输出路径*
  使用示例：
  ```
  clickhouse client --host 10.5.208.5 --database testdb --port 9440 -m --secure --query="select * from test_table FORMAT Parquet" > /opt/student.parquet
  ```
  
- ORC格式数据导入 **cat** *orc格式文件路径* **\| clickhouse client --host** *主机名/ClickHouse实例IP* **--database** *数据库名* **--port** *端口号* **-m --secure --query=** "**INSERT INTO** *表名* **FORMAT ORC**"
  使用示例：
  ```
  cat /opt/student.orc | clickhouse client --host 10.5.208.5 --database testdb --port 9440 -m --secure --query="INSERT INTO orc_tab001 FORMAT ORC"
  #orc格式文件格式文件数据可以从HDFS中导出，例如：
  hdfs dfs -cat /user/hive/warehouse/hivedb.db/emp_orc/000000_0_copy_1 | clickhouse client --host 10.5.208.5 --database testdb --port 9440 -m --secure --query="INSERT INTO orc_tab001 FORMAT ORC"
  ```
  
- ORC格式数据导出 **clickhouse client --host** *主机名/ClickHouse实例IP* **--database** *数据库名* **--port** *端口* -m **--secure --query=** "**select** \* **from** *表名* **FORMAT ORC** " \> *输出的ORC格式文件路径*
  使用示例：
  ```
  clickhouse client --host 10.5.208.5 --database testdb --port 9440 -m --secure --query="select * from csv_tab001 FORMAT ORC" > /opt/student.orc
  ```
  
- JSON格式数据导入 **INSERT INTO** *表名* **FORMAT JSONEachRow** *JSON格式字符串* *1* *JSON格式字符串2*
  使用示例：
  ```
  INSERT INTO test_table001 FORMAT JSONEachRow {"PageViews":5, "UserID":"4324182021466249494", "Duration":146,"Sign":-1} {"UserID":"4324182021466249494","PageViews":6,"Duration":185,"Sign":1}
  ```
  
- JSON格式数据导出 **clickhouse client --host** *主机名/ClickHouse实例IP* **--database** *数据库名* **--port** *端口号* **-m --secure --query=** "**SELECT** \* **FROM** *表名* **FORMAT JSON\|JSONEachRow\|JSONCompact\|...** " \>*json文件输出路径*
  使用示例
  ```
  #导出json
  clickhouse client --host 10.5.208.5 --database testdb --port 9440 -m --secure --query="SELECT * FROM test_table FORMAT JSON" > /opt/test.json
  #导出json(JSONEachRow)
  clickhouse client --host 10.5.208.5 --database testdb --port 9440 -m --secure --query="SELECT * FROM test_table FORMAT JSONEachRow" > /opt/test_jsoneachrow.json
  #导出json(JSONCompact)
  clickhouse client --host 10.5.208.5 --database testdb --port 9440 -m --secure --query="SELECT * FROM test_table FORMAT JSONCompact" > /opt/test_jsoncompact.json
  ```
  
 
