Cassandra:在集合中使用 COPY TO 导出的双精度值(地图)
Cassandra: Precision of double values exported with COPY TO in a collection (map)
在使用 COPY TO 导出到 CSV 文件时,如何以与双列相同的方式设置集合中双精度值的精度?
DOUBLEPRECISION 适用于列(下面的 d),但不适用于地图中的键。
CREATE TABLE test.digits (
name text,
d double,
digits map<double, int>,
PRIMARY KEY ((name))
);
INSERT INTO test.digits (name, d, digits) VALUES ('Fred', 0.1234567890123456789,
{
1.1234567890123456789 : 1,
2.1234567890123456789 : 2,
3.1234567890123456789 : 3
}
);
SELECT * from test.digits;
name | d | digits
------+----------+--------------------------------------
Fred | 0.123457 | {1.12346: 1, 2.12346: 2, 3.12346: 3}
COPY test.digits (name, d, digits) TO 'digits.csv' WITH header=true AND DELIMITER='|' AND NULL='' AND DOUBLEPRECISION=15;
cat digits.csv
name|d|digits
Fred|0.1234567890123457|{1.12346: 1, 2.12346: 2, 3.12346: 3}
如果无法在集合中设置此精度,这是错误还是功能?
尝试添加:AND FLOATPRECISION=15
COPY my_keyspace.digits (name, d, digits) TO 'digits.csv'
WITH header=true AND DELIMITER='|' AND NULL='' AND DOUBLEPRECISION=15
AND FLOATPRECISION = 16;
➜ cat digits.csv
name|d|digits
Fred|0.1234567890123457|{1.1234567890123457: 1, 2.1234567890123457: 2, 3.1234567890123457: 3}
cqlsh 实用程序默认显示 5 位精度。
要为 select 启用更多数字,请添加或创建一个 ~/.cassandra/cqlshrc 文件:
[ui]
float_precision = 10
double_precision = 15
但是,这不会解决 COPY TO 精度问题,这似乎是 @fg78nc 暗示的集合导出中的错误。
在使用 COPY TO 导出到 CSV 文件时,如何以与双列相同的方式设置集合中双精度值的精度?
DOUBLEPRECISION 适用于列(下面的 d),但不适用于地图中的键。
CREATE TABLE test.digits (
name text,
d double,
digits map<double, int>,
PRIMARY KEY ((name))
);
INSERT INTO test.digits (name, d, digits) VALUES ('Fred', 0.1234567890123456789,
{
1.1234567890123456789 : 1,
2.1234567890123456789 : 2,
3.1234567890123456789 : 3
}
);
SELECT * from test.digits;
name | d | digits
------+----------+--------------------------------------
Fred | 0.123457 | {1.12346: 1, 2.12346: 2, 3.12346: 3}
COPY test.digits (name, d, digits) TO 'digits.csv' WITH header=true AND DELIMITER='|' AND NULL='' AND DOUBLEPRECISION=15;
cat digits.csv
name|d|digits
Fred|0.1234567890123457|{1.12346: 1, 2.12346: 2, 3.12346: 3}
如果无法在集合中设置此精度,这是错误还是功能?
尝试添加:AND FLOATPRECISION=15
COPY my_keyspace.digits (name, d, digits) TO 'digits.csv'
WITH header=true AND DELIMITER='|' AND NULL='' AND DOUBLEPRECISION=15
AND FLOATPRECISION = 16;
➜ cat digits.csv
name|d|digits
Fred|0.1234567890123457|{1.1234567890123457: 1, 2.1234567890123457: 2, 3.1234567890123457: 3}
cqlsh 实用程序默认显示 5 位精度。
要为 select 启用更多数字,请添加或创建一个 ~/.cassandra/cqlshrc 文件:
[ui]
float_precision = 10
double_precision = 15
但是,这不会解决 COPY TO 精度问题,这似乎是 @fg78nc 暗示的集合导出中的错误。