【发布时间】:2016-08-23 13:50:15
【问题描述】:
鉴于我有一个这样的 csv 文件
str_name,int_points,int_bonus
joe,2,5
Moe,10,15
Carlos,25,60
我可以拥有 x 列和 y 行数的 csv 文件,因此我正在尝试开发一种通用方法来解析它并将数据填充到 dynamodb 表中。
为了填充 dynamodb 表,我会做这样的事情
String line = "";
String cvsSplitBy = ",";
try (BufferedReader br = new BufferedReader(
new InputStreamReader(objectData, "UTF-8"));
while ((line = br.readLine()) != null) {
// use comma as separator
String[] elements = line.split(cvsSplitBy);
try {
table.putItem(new Item()
.withPrimaryKey("name", elements[0])
.withInt("points", elements[1])
.withInt("bonus", elements[2])
.....);
System.out.println("PutItem succeeded: " + elements[0]);
} catch (Exception e) {
System.err.println("Unable to add user: " + elements);
System.err.println(e.getMessage());
break;
}
}
} catch (IOException e) {
e.printStackTrace();
}
但是我并不总是知道我是插入一个 int 还是一个字符串,它依赖于 csv 文件,所以我有点迷失如何创建一个通用函数来读取我的 csv 文件的第一行并获取前缀的优点,它指示特定列是 int 还是 string。
【问题讨论】:
-
您不能指定 CSV 文件的格式吗?
-
我会使用类似于 opencsv 的 API。当您解析 CSV 文件时,您将获得 String[] 的 String[],这将在这种情况下帮助您。
-
@dsp_user 我的 csv 文件将与我在上面发布的示例完全相同..除了它会有更多的列和行..
-
解析 csv 文件时,文件中的每一行都会有一个 String[]。如果您知道 int 和 strings 的位置,将这些值保存到 DB 应该很简单。我在这里错过了什么吗?
-
@dsp_user 我了解,但是如果您查看我的 table.putItem ,我将如何将其用于插入数据的方法,以及随后的所有内容都必须根据列数和类型进行更改是。如果你能举例说明你将如何做到这一点,我会很高兴的,也许我错过了一些东西。
标签: java amazon-web-services amazon-dynamodb aws-lambda