Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/330.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用python脚本将没有标题的csv数据加载到cassandra列族中_Python_Csv_Cassandra_Pycassa - Fatal编程技术网

如何使用python脚本将没有标题的csv数据加载到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连接数据库并

我用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连接数据库并从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加载数据,我建议您使用外部工具,这些工具非常灵活,并且针对该任务进行了大量优化。有关示例,请参阅以下博客帖子: