问题描述
我正在尝试使用Python将.csv文件加载到Apache Cassandra数据库中。 与session.execute集成的命令“ copY”似乎不起作用。 它给出了=','对应关系的意外缩进,但是...我犯了一些错误,发现不支持这种方式的copY命令。
在此脚本中,time_test和p是两个浮点变量
from cassandra.cluster import Cluster
cluster = Cluster()
session = cluster.connect('myKEYSPACE')
rows = session.execute('copY table_test (time_test,p)
from'/home/mypc/Desktop/testfile.csv' with delimiter=',' and header=true;
')
print('DONE')
谢谢您的帮助!
解决方法
这里的主要问题是COPY
不是CQL命令,而是cqlsh
命令,因此无法通过session.execute
执行。
我建议使用DSBulk将数据加载到Cassandra中-它非常灵活,高性能,并且不需要编程。对于最简单的情况,当您将CSV文件标题中的列直接映射到数据库中的列名称时,命令行将非常简单:
dsbulk load -url file.csv -k keyspace -t table -header true
关于DSBulk的一系列博客文章涉及很多主题:
- https://www.datastax.com/blog/2019/03/datastax-bulk-loader-introduction-and-loading
- https://www.datastax.com/blog/2019/04/datastax-bulk-loader-more-loading
- https://www.datastax.com/blog/2019/04/datastax-bulk-loader-common-settings
- https://www.datastax.com/blog/2019/06/datastax-bulk-loader-unloading
- https://www.datastax.com/blog/2019/07/datastax-bulk-loader-counting
- https://www.datastax.com/blog/2019/12/datastax-bulk-loader-examples-loading-other-locations