如何使用python脚本将没有标题的csv数据加载到cassandra列族中
我用cqlsh在本地cassandra创建了一个列族,如下所示如何使用python脚本将没有标题的csv数据加载到cassandra列族中,python,csv,cassandra,pycassa,Python,Csv,Cassandra,Pycassa,我用cqlsh在本地cassandra创建了一个列族,如下所示 CREATE TABLE sample.stackoverflow_question12 ( id1 int, class1 int, name1 text, PRIMARY KEY (id1) ) 我有一个名为“data.csv”的示例csv文件,文件中的数据如下所示 id1 |名称1 |类别1 1 |你好| 10 2 |世界| 20 使用下面的python代码通过Anaconda连接数据库并
CREATE TABLE sample.stackoverflow_question12 (
id1 int,
class1 int,
name1 text,
PRIMARY KEY (id1)
)
我有一个名为“data.csv”的示例csv文件,文件中的数据如下所示
id1 |名称1 |类别1
1 |你好| 10 2 |世界| 20 使用下面的python代码通过Anaconda连接数据库并从csv加载数据(在Anaconda中使用pip安装Cassandra驱动程序后)
#连接到本地Cassandra服务器
从Cassandra.Cluster导入集群
从cassandra.auth导入PlainTextAuthProvider
auth_provider=PlainTextAuthProvider(用户名='cassandra',密码='cassandra')
群集=群集([“127.0.0.1”],验证提供程序=验证提供程序,协议版本=4)
session=cluster.connect()
session.set_键空间('sample'))
cluster.connect()
#文件加载
准备=会话。准备('插入stackoverflow_问题12(id1,class1,name1)值(?,?)')
以open('D:/Cassandra/NoSQL/data.csv','r')作为票价:
以车费计算的车费:
列=票价拆分(“,”)
id1=列[0]
class1=列[1]
名称1=列[2]
执行(已准备好,[id1,class1,name1])
#关闭文件
票价:收盘价
当我执行上面的代码时,下面出现了错误
收到列“id1”的无效类型的参数。期望:,得到:;(必需参数不是整数)
当我将数据类型更改为文本并运行上述代码时,它也会加载带有标题字段的数据
有人能帮我修改代码以加载没有标题内容的数据吗?或者您成功的代码也可以
将列名设置为id1和class1的原因是id和CLASSE是关键字,并且在“fares”循环中使用时在代码中抛出错误
但在现实世界中,列名将被视为类和id。当这些类型的列出现在图片中时,如何运行代码
我想到的另一个问题是Cassandra将先存储主键,然后按升序存储剩余键。我们可以加载索引与Cassandra列存储不同的csv列吗
基于此,我需要构建另一个解决方案。您需要根据您的模式使用类型-对于整数列,您需要使用
int(columns…
,因为split生成字符串。如果要跳过标题,则可以执行以下操作:
cnt=0
以open('D:/Cassandra/NoSQL/data.csv','r')作为票价:
如果cnt=0:
持续
以车费计算的车费:
...
虽然最好使用可以自定义的自动跳过标题
另外,如果您只想从CSV加载数据,我建议您使用外部工具,这些工具非常灵活,并且针对该任务进行了大量优化。有关示例,请参阅以下博客帖子: