使用 python 脚本在 cassandra 中导入 csv 文件

Import csv file in cassandra using python script

我想使用 python 脚本在 cassandra 中导入一个 csv 文件。我已经知道如何使用 cqlsh 中的 COPY 命令在 cassandra 中导入 csv。

我的 csv file 数据类型:时间戳、时间戳、小数、小数、小数、小数、小数、小数

我已经有了代码,只是不知道如何在 cassandra 中导入 csv 文件

KEYSPACE = "test_cassandra"

cluster = Cluster(['127.0.0.1'])
session = cluster.connect()

log.info("creating keyspace . . .")
session.execute("""
    CREATE KEYSPACE IF NOT EXISTS %s 
    WITH replication = {'class': 'SimpleStrategy', 'replication_factor': '1'} 
    """ % KEYSPACE)

log.info("setting keyspace . . .")
session.set_keyspace(KEYSPACE)

log.info("creating table . . .")
session.execute("""
    CREATE TABLE IF NOT EXISTS test_NYC_taxi (
        pickup timestamp, 
        dropoff timestamp, 
        distance decimal, 
        fare decimal, 
        p_long decimal, 
        p_lat decimal, 
        d_long decimal, 
        d_lat decimal, 
        PRIMARY KEY(pickup, dropoff, distance));
    """)



prepared = session.prepare("""
        INSERT INTO test_nyc_taxi (pickup, dropoff, distance, fare, p_long, p_lat, d_long, d_lat)
        VALUES (?, ?, ?, ?, ?, ?, ?, ?)
        """)


非常感谢任何帮助。 :)

在 python 代码中打开 csv 文件 reader。遍历这些行并调用插入语句。请查看下方 link.

你走在正确的道路上。您需要添加的唯一东西是一个文件 reader(我将您的数据保存为 .csv 文件并让它工作),一个循环遍历它,然后导入datetime 包将您的日期转换为准备好的语句。

这对我有用:

with open("/home/aaron/Documents/Whosebug/test_NYC_taxi.csv", "r") as fares:
    for fare in fares:
        columns=fare.split(",")
        pickup=datetime.datetime.strptime(columns[0],"%Y-%m-%d").date()
        dropoff=datetime.datetime.strptime(columns[1],"%Y-%m-%d").date()
        distance=columns[2]
        fare=columns[3]
        p_long=columns[4]
        p_lat=columns[5]
        d_long=columns[6]
        d_lat=columns[7]

        session.execute(prepared, [pickup,dropoff,distance,fare,p_long,p_lat,d_long,d_lat])

#closing the file
fares.close()

#closing Cassandra connection
session.shutdown()