gpt4 book ai didi

cassandra - 为从 CSV 文件导入的每一行添加 UUID

转载 作者:行者123 更新时间:2023-12-05 02:23:01 24 4
gpt4 key购买 nike

我们想将 10 万行从 .csv 文件导入到 Cassandra 表中。

每一行都没有唯一值,因此我们想将 UUID 添加到每个导入的行,我们如何在从 CSV 文件导入数据时自动执行此操作。

.CSV 文件中的示例行(第一行是列名)

DateTime,Latitude,Longitude,Depth,Magnitude,MagType,NbStations,Gap,Distance,RMS,Source,EventID,Version
2014-09-11T12:36:11.000+00:00,67.689,-162.763,14.6,3.9,ml,,,,0.79,ak,ak11387003,1410441826879

想像下面这样给每一行添加UUID

UID, DateTime,Latitude,Longitude,Depth,Magnitude,MagType,NbStations,Gap,Distance,RMS,Source,EventID,Version
c37d661d-7e61-49ea-96a5-68c34e83db3a,2014-09-11T12:36:11.000+00:00,67.689,-162.763,14.6,3.9,ml,,,,0.79,ak,ak11387003,1410441826879

最佳答案

无法直接从 CQL 的 COPY command 执行此操作,但您可以先在 Cassandra 外部处理 CSV 文件。

例如,这是一个 Python 脚本,它将从文件 in.csv 中读入,将 UUID 列附加到每一行,然后写出到 out.csv:

#!/usr/bin/python
# read in.csv adding one column for UUID

import csv
import uuid

fin = open('in.csv', 'rb')
fout = open('out.csv', 'w')

reader = csv.reader(fin, delimiter=',', quotechar='"')
writer = csv.writer(fout, delimiter=',', quotechar='"')

firstrow = True
for row in reader:
if firstrow:
row.append('UUID')
firstrow = False
else:
row.append(uuid.uuid4())
writer.writerow(row)

生成的文件可以使用 CQL COPY 导入(在您相应地创建架构之后)。如果您使用此示例,请务必阅读 Python's uuid functions选择您需要的那个(可能是 uuid1uuid4)。

关于cassandra - 为从 CSV 文件导入的每一行添加 UUID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25799756/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com