CSV文件将在Amazon S3存储桶中上传。
目前的实施:
绝对没有任何线索发生在那之后
谷歌搜索后发现PostgreSQL中的copy
命令是读取/写入PostgreSQL数据库的最快方法。
Java,C,Python也支持多种语言。
尝试使用PostgreSQL的CopyManager
API,它已经有了copyIn方法的重载版本。
copyIn(String sql, InputStream is)
- 我们不能使用这个,因为我们的csv在第一行包含标题列,我们想跳过第一行。
copyIn(String sql, Reader rd)
- 这不接受CSVReader对象,因为它不是java.io.Reader类型
技术
我能够找出代码缺陷。我们已经提供了一个db列作为Unique约束,它不需要,而在CSV文件中有这个列的重复值。因此,记录插入失败。
Thanx,Fanendra
我们不能使用这个,因为我们的csv在第一行包含标题列,我们想跳过第一行。
这就是COPY ... WITH HEADER
的用途。
指定该文件包含标题行,其中包含文件中每列的名称。在输出时,第一行包含表中的列名,在输入时,第一行被忽略。仅在使用CSV格式时才允许此选项。
我们不能使用这个,因为我们的csv在第一行包含标题列,我们想跳过第一行。
那么就跳过第一行。 copyIn()
不会“回放”它所获得的读者。您也不需要使用CSVReader。 copy
语句将负责解析CSV文件。您需要做的就是提供一个位于应该处理的第一行的阅读器。
一些事情:
CopyManager mgr = new CopyManager(...);
BufferedReader in = new BufferedReader(new FileReader(...));
in.readLine(); // skip the header line
mgr.copyIn("copy target_table from stdin with (...)", in);
确保在copy
命令中提供适当的选项,以便可以正确解析文件。