2014-09-12 3 views
0

.csv 파일에서 Cassandra 테이블로 10 만 개의 행을 가져 오려고합니다.CSV 파일에서 가져 오는 각 행에 대해 UUID 추가

각 행마다 고유 한 값이 없으므로 가져온 각 행에 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 

이 그렇게 할 수있는 방법은 없습니다

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 

답변

2

아래처럼 각 행에 UUID를 추가 할 파일 (첫 번째 행은 열 이름입니다) CQL의 COPY command에서 직접 가져 왔지만 대신 Cassandra 외부에서 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) 

결과 파일을 가져올 수 있습니다 :

예를 들어

, 여기 out.csv하기 위해, 파일 in.csv에서 읽어 각 행에 UUID 열을 추가하고 기록합니다 파이썬 스크립트입니다 CQL COPY (스키마를 적절히 생성 한 후에)를 사용합니다. 이 예를 사용하는 경우 Python's uuid functions을 읽고 필요한 것을 선택하십시오 (아마도 uuid1 또는 uuid4).

+0

감사합니다. Brian이 작업했습니다. – Vikram

관련 문제