我正试图用Python将.csv文件加载到Apache Cassandra数据库中。命令";COPY";与session.execute集成似乎不起作用。它给出了一个意外的缩进,对应=",",但是。。。我红了一些关于的东西,发现不支持以这种方式使用命令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