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

jk9hmnmh  于 2021-06-10  发布在  Cassandra
关注(0)|答案(2)|浏览(592)

我想用python脚本在cassandra中导入一个csv文件。我已经知道如何使用cqlsh中的copy命令在cassandra中导入csv。
我的csv文件的数据类型:timestamp,timestamp,decimal,decimal,decimal,decimal,decimal,decimal
我已经有了一个代码,我只是缺少如何将csv文件导入cassandra中

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 (?, ?, ?, ?, ?, ?, ?, ?)
        """)

任何帮助都将不胜感激。:)

c3frrgcw

c3frrgcw1#

你走对了路。唯一需要添加的是一个文件读取器(我将您的数据保存为 .csv 一个for循环遍历它,然后导入 datetime 包来转换准备语句的日期。
这对我有用:

with open("/home/aaron/Documents/stackoverflow/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()
w9apscun

w9apscun2#

用python代码打开csv文件读取器。遍历行并调用insert语句。请检查下面的链接。
https://stackoverflow.com/a/19828117/1358551

相关问题