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)