无法从CSV文件复制数据

0 投票
1 回答
1951 浏览
提问于 2025-04-21 08:06

无法使用 'COPY from' 命令将数据导入到 Cassandra 表/列族中。

我们尝试过

cqlsh> copy eqdata from '/home/swiftguy/cassandra/earthquakedata/weather-data-with-uuid.csv';
Bad Request: line 1:298 no viable alternative at input ')'
Aborting import at record #0 (line 1). Previously-inserted values still present.

表的详细信息

创建表 earthquakedata( eqtime 时间戳, 经度 浮点数, 纬度 浮点数, 深度 浮点数, 震级 浮点数, 震级类型 文本, 站点数量 浮点数, 间隙 浮点数, 距离 浮点数, 均方根 浮点数, 来源 文本, 事件ID 文本, 版本 文本, id uuid, 主键(eqtime, id));

这是我们尝试导入的 csv 文件

请帮帮我。提前谢谢!

1 个回答

1

从这个链接 http://www.datastax.com/documentation/tutorials/gis.zip 下载 gis.zip 文件,里面有地震数据。然后把里面的 CSV 文件和你正在使用的 CSV 文件进行对比。这个 CSV 文件有表头,数据之间用逗号分隔,基本上和公开的数据没有太大变化。在 cqlsh 中执行下面的操作,记得在 COPY 命令中调整 'path/earthquakes.csv' 的路径,并使用默认的 COPY 选项:

CREATE TABLE earthquakes ( 
             datetime text PRIMARY KEY, 
             latitude double, 
             longitude double, 
             depth double, 
             magnitude double, 
             magtype text, 
             nbstations int, 
             gap double, 
             distance double, 
             rms double, 
             source text, 
             eventid int 
           );
COPY earthquakes (datetime, latitude, longitude, depth, magnitude, magtype, nbstations, gap, distance, rms, source, eventid) FROM 'path/earthquakes.csv' WITH HEADER = 'true';

在运行了 Brian 的 Python 脚本来添加 UUID 之后,并且调整了表格以适应 UUID,执行这个命令就能导入所有的行:

cqlsh:mykeyspace> COPY earthquakes (datetime, latitude, longitude, depth, magnitude, magtype, nbstations, gap, distance, rms, source, eventid,newid) FROM '/Users/krishahn/Downloads/gis/out.csv' WITH HEADER = 'true';
77037 rows imported in 2 minutes and 35.913 seconds.

撰写回答