# csv格式导入

## 1.介绍说明

* 多线程的方式，读取指定目录下json格式文件，导入程序分别将事件数据导入方舟事件数据Topic、用户数据导入方舟用户数据Topic；
* 已经读取完成的文件不会重复读取；
* 自动解析csv表头，作为字段属性名称；
* 可以对导入字段做字段名映射。

{% hint style="danger" %}
1、单个文件同时只能由一个线程读取。

2、文档中都是以集群版为例切换机器或连接服务，如果是**单机版**，将对应的ark2/ark3**改为ark1**即可。

3、导入文件需要以event\_和profile\_开头。

4、csv文件内第一行必须为表头。
{% endhint %}

{% hint style="info" %}
**建议**：为保证正式项目数据导入的准确性，在数据导入正式项目前，建议先创建一个测试项目，将测试数据导入测试项目中，测试数据导入完成并且数据校验无误后，即可删除测试项目，将正式数据导入到正式项目，进而保证了数据导入的准确性。
{% endhint %}

## 2.运行环境

导入工具需要在JAVA环境中运行，单机版和集群版都可以使用。

{% hint style="info" %}
1、导入工具需要在方舟部署服务器/可访问方舟服务器上的机器上使用；

2、为了避免网络异常、数据传输速度等造成数据导入慢等问题，**建议**数据导入工作在**方舟**部署的任一**服务器**上**使用**。
{% endhint %}

## 3.使用方法

csv文导入工具通过父命令+子命令的形式直接启动。

### 3.1.参数说明

| 参数名称      | 参数示例                             | 参数说明                                                  | 是否必传 |
| --------- | -------------------------------- | ----------------------------------------------------- | ---- |
| -k        | 31abd9593e9983ec                 | 项目appKey                                              | 是    |
| -d        | /data/tmp                        | 需要导入的csv文件的导入目录                                       | 是    |
| -c        | /data/tmp/csv\_import.properties | <p>指定配置文件绝对路径，</p><p>配置文件名为csv\_import.properties</p> | 否    |
| --help/-h | 无                                | 显示csv文件导入帮助文档                                         | 否    |

{% hint style="info" %}
如果csv文件列已经包含了xwho,xwhen,xwhat，可以不用指定配置文件直接导入，如果数据中不含这3个字段，则需要添加配置文件。
{% endhint %}

### 3.2.配置文件参数说明

| 参数名称                       | 参数示例                          | 参数说明                                          | 是否必传 |
| -------------------------- | ----------------------------- | --------------------------------------------- | ---- |
| event.attr.mapping         | user\_id:xwho,update:xwhen    | 将csv事件字段列名映射成方舟的字段名，字段映射中间用冒号分隔，多个字段映射中间用逗号分隔 | 否    |
| profile.attr.mapping       | user\_id:xwho,update:xwhen    | 将csv用户字段列名映射成方舟的字段名，字段映射中间用冒号分隔，多个字段映射中间用逗号分隔 | 否    |
| event.attr.to.number       | height,length                 | 将csv事件文件的指定列转换成数值类型,多个字段用逗号分隔                 | 否    |
| profile.attr.to.number     | age,grade                     | 将csv用户文件的指定列转换成数值类型,多个字段用逗号分隔                 | 否    |
| kafka.metadata.broker.list | ark1:9092,ark2:9092,ark3:9092 | kafka的主机名和端口号                                 | 否    |
| is.login.data              | true                          | 导入数据是否属于登录数据                                  | 否    |

### 3.3.示例展示

将/data/tmp/20201027/csv\_import/文件夹下的事件数据导入项目test123321。

```
arksh csv-import -k test123321 -d /data/tmp/20201027/csv_import
```


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://arkdocs.analysys.cn/integration/import/tool/csv-import.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
