我正在尝试将包含 3 列 ( ATTRIBUTE_NAME,ATTRIBUTE_VALUE,ID
) 的 csv 文件转换为每行为 ( ) 的平面表ID,Attribute1,Attribute2,Attribute3,....
。最后提供了此类表格的示例。
Python、Perl 或 SQL 都可以。非常感谢您,我非常感谢您的时间和努力!
事实上,我的问题与这篇文章非常相似,除了在我的情况下,属性的数量非常大(~300)并且每个 ID 之间并不一致,因此对每个属性进行硬编码可能不是一个实际的解决方案。
对我来说,具有挑战性/困难的部分是:
- 大约有 2.7 亿行输入,输入表的总大小约为 60 GB。
- 一些单个值(字符串)中包含逗号(
,
),整个字符串将用双引号("
)括起来,以使读者意识到这一点。例如"JPMORGAN CHASE BANK, NA, TX"
在 ID=53 中。 - ID 的属性集不同。比如整体属性的个数是8,但是ID=53、17、23分别只有7、6、5。ID=17 没有属性
string_country
andstring_address
,所以blank/nothing
在逗号后输出。
输入属性值表如下所示。在这个示例输入和输出中,我们有 3 个 ID,其属性的数量可以不同,具体取决于我们是否可以从服务器获取这些属性。
ATTRIBUTE_NAME,ATTRIBUTE_VALUE,ID
num_integer,100,53
string_country,US (United States),53
string_address,FORT WORTH,53
num_double2,546.0,53
string_acc,My BankAcc,53
string_award,SILVER,53
string_bankname,"JPMORGAN CHASE BANK, NA, TX",53
num_integer,61,17
num_double,34.32,17
num_double2,200.541,17
string_acc,Your BankAcc,17
string_award,GOLD,17
string_bankname,CHASE BANK,17
num_integer,36,23
num_double,78.0,23
string_country,CA (Canada),23
string_address,VAN COUVER,23
string_acc,Her BankAcc,23
输出表应如下所示。(列中属性的顺序不固定,可以按字母顺序排序,也可以按出现顺序排序。)
ID,num_integer,num_double,string_country,string_address,num_double2,string_acc,string_award,string_bankname
53,100,,US (United States),FORT WORTH,546.0,My BankAcc,SILVER,"JPMORGAN CHASE BANK, NA, TX"
17,61,34.32,,,200.541,Your BankAcc,GOLD,CHASE BANK
23,36,78.0,CA (Canada),VAN COUVER,,Her BankAcc,,