Как импортировать данные из csv файла в аэроспайк без использования загрузчика аэроспайк? Есть ли альтернатива загрузчику аэроспайк?
Я хочу импортировать следующие данные из csv-файла в aerospike и запустить простой запрос select для отображения данных с использованием python в качестве клиента
например
policyID,statecode,county,eq_site_limit,hu_site_limit,fl_site_limit,fr_site_limit,tiv_2011,tiv_2012,eq_site_deductible,hu_site_deductible,fl_site_deductible,fr_site_deductible,point_latitude,point_longitude,line,construction,point_granularity
119736,FL,CLAY COUNTY,498960,498960,498960,498960,498960,792148.9,0,9979.2,0,0,30.102261,-81.711777,Residential,Masonry,1
448094,FL,CLAY COUNTY,1322376.3,1322376.3,1322376.3,1322376.3,1322376.3,1438163.57,0,0,0,0,30.063936,-81.707664,Residential,Masonry,3
query = client.query( 'test', 'csvfile' )
query.select( 'policyID', 'statecode' )
2 ответа
Вы можете попробовать использовать модуль Python CSV вместе с клиентом Aerospike Python:
https://docs.python.org/2/library/csv.html
http://www.aerospike.com/docs/client/python/
И сделайте что-то похожее на следующее:
import aerospike
import sys
import csv
global rec
rec = {}
csvfile = open('aerospike.csv', "rb")
reader = csv.reader(csvfile)
rownum = 0
for row in reader:
# Save First Row with headers
if rownum == 0:
header = row
else:
colnum = 0
for col in row:
# print (rownum,header[colnum],col)
rec[header[colnum]] = col
colnum += 1
rownum += 1
# print(rownum,rec)
if rec:
client.put(('test', 'demo', str(rownum)), rec)
rec = {}
csvfile.close()
Примечание. Может потребоваться проверить размер заголовков и убедиться, что они не превышают 14 символов. если нет, вы можете получить следующее:
error: (21L, 'A bin name should not exceed 14 characters limit', 'src/main/conversions.c', 500)
Насколько мне известно, нет другого встроенного инструмента, кроме загрузчика, который позволяет импортировать CSV. Вы могли бы, возможно, построить один, используя существующие клиентские инструменты.