我已经获得了一堆csv格式的联系人:
companyID, companyName, contactId, firstName, lastName, email
并要求将单个公司的所有联系人合并为一行,如此
companyID, companyName, contactId, firstName, lastName, email, companyName, contactId, firstName, lastName, email...
至于为什么他们想要这样的数据,我不知道。
只要它是免费提供的,我就不会受任何特定技术的束缚,而且我得到了正确的结果。你会如何实现这个目标?
到目前为止,我尝试导入postgres表并尝试各种连接和递归查询,但我无法提出正确的语法。
答案 0 :(得分:1)
如果您可以在Windows上访问Unix / Linux或CygWin,则可以使用
sort csvFileName | awk -F, 'BEGIN {last="";} {if (last == $1) { printf ","; } else { printf "\n"; }; printf $0; last =$1; }'
这会每次重复一次CompanyID但您可以将printf 0 $更改为输出除$ 1以外的列,或者您可以发布进程以删除这些列。
答案 1 :(得分:0)
这是一个潜在的解决方案:
Map<Company, List<Contact>>
以将联系人映射到公司。List<Contact>
。OpenCSV可能会有所帮助。
如果您没有找到开源CSV阅读器,您可以根据逗号(,)拆分该行,并在公司和联系人类中,只需实现类似public String toCSV()
类的内容即可将对象输出为CSV。