【问题标题】:How can I upload a .csv file with python to Cassandra?如何使用 python 将 .csv 文件上传到 Cassandra?
【发布时间】:2021-10-31 01:55:55
【问题描述】:

我想使用 python 脚本在 cassandra 中导入一个 csv 文件。不知道怎么弄

【问题讨论】:

  • 只是提个醒,但由于问题缺乏细节,您可能收到了一些反对票。将来,如果您开始尝试构建某些东西,您将获得更好的响应,并且您可以就问题或错误消息提出特定问题。
  • 请提供足够的代码,以便其他人更好地理解或重现问题。

标签: python csv cassandra upload


【解决方案1】:

如果您正在寻找一个简单的解决方案,您可以随时使用cqlshCOPY 实用程序。

> COPY myTable (col1, col2, col3, col4) FROM 'temp.csv' WITH HEADER=true;

在用 Python 构建新东西之前,我会选择 COPYDSBulk。事实上,cqlsh 使用 Python 驱动程序并且已经构建用于处理分页、批量大小、超时等问题。

文档:COPY FROM

编辑 20210903

如果您准备使用 CQL 进行查询并在 Python 中处理结果集,您会想要做这样的事情...

导入部分将如下所示:

from cassandra.cluster import Cluster
from cassandra.auth import PlainTextAuthProvider
from cassandra.query import SimpleStatement

首先建立你的连接:

auth_provider = PlainTextAuthProvider(username=username, password=password)
cluster = Cluster(nodes,auth_provider=auth_provider)
session = cluster.connect()

然后将您的查询构建为SimpleStatement

strCQL = f"SELECT * FROM {keyspace}.{table}"
print(strCQL)

statement = SimpleStatement(strCQL,fetch_size=100)
rows = session.execute(statement)
for row in rows:
    print(row)

请注意,您还可以在 rowrow[0]row[1] 等)上使用它们的序号索引 print 单个列值。

在上面的示例中,我将获取大小设置为 100。默认为 5000,但如果是 result set is large,您会希望它更小以避免超时。

Link to my Git repo 供参考。

【讨论】:

  • COPY 仅适用于 cqlsh...我需要在 python 中使用 CQL 指令...
  • @Mark031 已编辑。祝你好运!
【解决方案2】:

您可以使用DataStax Bulk Loader 工具 (DSBulk) 将 CSV 格式的数据批量加载到 Cassandra 表中。

以下是一些参考示例,可帮助您快速入门:

DSBulk 是开源的,因此可以免费使用。干杯!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-12-20
    • 1970-01-01
    • 2017-04-02
    • 1970-01-01
    • 2019-12-01
    • 2021-02-16
    • 2011-03-12
    • 1970-01-01
    相关资源
    最近更新 更多