Brian Cantoni created CASSANDRA-9217:
----------------------------------------
Summary: Problems with cqlsh copy command
Key: CASSANDRA-9217
URL: https://issues.apache.org/jira/browse/CASSANDRA-9217
Project: Cassandra
Issue Type: Bug
Reporter: Brian Cantoni
On the current 2.1 branch I notice a few (possibly related) problems with cqlsh
copy commands. I'm writing them here together but we can separate if there are
different causes.
*1. Cannot import from CSV if column name is 'date'*
Test file monthly.csv contents:
{noformat}
stationid,metric,date
LAE,barometricpressure,2014-01-01 00:00:00+0000
LAE,barometricpressure,2014-02-01 00:00:00+0000
LAE,barometricpressure,2014-03-01 00:00:00+0000
{noformat}
Steps:
{noformat}
CREATE KEYSPACE IF NOT EXISTS weathercql WITH replication = { 'class':
'SimpleStrategy', 'replication_factor': '1' };
CREATE TABLE IF NOT EXISTS weathercql.monthly (
stationid text,
metric text,
date timestamp,
primary key (stationid, metric, date)
);
COPY weathercql.monthly (stationid, metric, date) FROM 'monthly.csv' WITH
HEADER='true';
{noformat}
Result: the copy command fails unless date is enclosed in double quotes:
{noformat}
cqlsh> COPY weathercql.monthly (stationid, metric, date) FROM 'monthly.csv'
WITH HEADER='true';
Improper COPY command.
cqlsh> COPY weathercql.monthly (stationid, metric, "date") FROM 'monthly.csv'
WITH HEADER='true';
3 rows imported in 0.096 seconds.
{noformat}
If I instead name the 'date' column as 'datex', it works without quotes.
The same steps work on Cassandra 2.1.4 (release build).
*2. Cannot copy to CSV*
Sample data:
{noformat}
create keyspace if not exists test with replication =
{'class':'SimpleStrategy', 'replication_factor':1};
create table if not exists test.kv (key int primary key, value text);
insert into test.kv (key,value) values (1,'alpha');
insert into test.kv (key,value) values (2,'beta');
insert into test.kv (key,value) values (3,'charlie');
{noformat}
When you try to export to CSV, it throws what appears to be a Python error, and
the file is not created correctly:
{noformat}
cqlsh> copy test.kv (key,value) to 'test.csv';
global name 'meter' is not defined
{noformat}
The same steps work on Cassandra 2.1.4 (release build).
*3. Copy from CSV inside CQL command file doesn't work*
File kv.csv:
{noformat}
key,value
1,'a'
2,'b'
3,'c'
{noformat}
File kv.cql:
{noformat}
create keyspace if not exists test with replication = {'class':
'SimpleStrategy', 'replication_factor':1};
create table if not exists test.kv (key int primary key, value text);
truncate test.kv;
copy test.kv (key, value) from 'kv.csv' with header='true';
select * from test.kv;
{noformat}
When command file passed to cqlsh, an error is reported on the `copy` command
and it doesn't work:
{noformat}
$ bin/cqlsh -f kv.cql
kv.cql:5:descriptor 'lower' requires a 'str' object but received a 'unicode'
key | value
-----+-------
(0 rows)
{noformat}
The same commands work correctly when run directly inside cqlsh or when
executed with -e option like: {{bin/cqlsh -e "copy test.kv (key, value) from
'kv.csv' with header='true';"}}.
This third issue appears to also be broken in 2.1.4 and 2.1.3 release builds,
but works in 2.1.2.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)