cassandra-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Lex Lythius (JIRA)" <j...@apache.org>
Subject [jira] [Updated] (CASSANDRA-8675) COPY TO/FROM broken for newline characters
Date Fri, 23 Jan 2015 15:37:34 GMT

     [ https://issues.apache.org/jira/browse/CASSANDRA-8675?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]

Lex Lythius updated CASSANDRA-8675:
-----------------------------------
    Description: 
Exporting/importing does not preserve contents when texts containing newline (and possibly
other) characters are involved:

{code:sql}
cqlsh:test> create table if not exists copytest (id int primary key, t text);
cqlsh:test> insert into copytest (id, t) values (1, 'This has a newline
        ... character');
cqlsh:test> insert into copytest (id, t) values (2, 'This has a quote " character');
cqlsh:test> insert into copytest (id, t) values (3, 'This has a fake tab \t character (typed
backslash, t)');
cqlsh:test> select * from copytest;

 id | t
----+---------------------------------------------------------
  1 |                           This has a newline\ncharacter
  2 |                            This has a quote " character
  3 | This has a fake tab \t character (entered slash-t text)

(3 rows)

cqlsh:test> copy copytest to '/tmp/copytest.csv';

3 rows exported in 0.034 seconds.
cqlsh:test> 

cqlsh:test> copy copytest to '/tmp/copytest.csv';

3 rows exported in 0.034 seconds.
cqlsh:test> copy copytest from '/tmp/copytest.csv';

3 rows imported in 0.005 seconds.
cqlsh:test> select * from copytest;

 id | t
----+-------------------------------------------------------
  1 |                          This has a newlinencharacter
  2 |                          This has a quote " character
  3 | This has a fake tab \t character (typed backslash, t)

(3 rows)
{code}

I tried replacing \n in the CSV file with \\n, which just expands to \n in the table; and
with an actual newline character, which fails with error since it prematurely terminates the
record.

It seems backslashes are only used to take the following character as a literal

Until this is fixed, what would be the best way to refactor an old table with a new, incompatible
structure maintaining its content and name?


  was:
Exporting/importing does not preserve contents when texts containing newline (and possibly
other) characters are involved:

cqlsh:test> create table if not exists copytest (id int primary key, t text);
cqlsh:test> insert into copytest (id, t) values (1, 'This has a newline
        ... character');
cqlsh:test> insert into copytest (id, t) values (2, 'This has a quote " character');
cqlsh:test> insert into copytest (id, t) values (3, 'This has a fake tab \t character (typed
backslash, t)');
cqlsh:test> select * from copytest;

 id | t
----+---------------------------------------------------------
  1 |                           This has a newline\ncharacter
  2 |                            This has a quote " character
  3 | This has a fake tab \t character (entered slash-t text)

(3 rows)

cqlsh:test> copy copytest to '/tmp/copytest.csv';

3 rows exported in 0.034 seconds.
cqlsh:test> 

cqlsh:test> copy copytest to '/tmp/copytest.csv';

3 rows exported in 0.034 seconds.
cqlsh:test> copy copytest from '/tmp/copytest.csv';

3 rows imported in 0.005 seconds.
cqlsh:test> select * from copytest;

 id | t
----+-------------------------------------------------------
  1 |                          This has a newlinencharacter
  2 |                          This has a quote " character
  3 | This has a fake tab \t character (typed backslash, t)

(3 rows)


I tried replacing \n in the CSV file with \\n, which just expands to \n in the table; and
with an actual newline character, which fails with error since it prematurely terminates the
record.

It seems backslashes are only used to take the following character as a literal

Until this is fixed, what would be the best way to refactor an old table with a new, incompatible
structure maintaining its content and name?



> COPY TO/FROM broken for newline characters
> ------------------------------------------
>
>                 Key: CASSANDRA-8675
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-8675
>             Project: Cassandra
>          Issue Type: Bug
>          Components: Core
>         Environment: [cqlsh 5.0.1 | Cassandra 2.1.2 | CQL spec 3.2.0 | Native protocol
v3]
> Ubuntu 14.04 64-bit
>            Reporter: Lex Lythius
>              Labels: cql
>
> Exporting/importing does not preserve contents when texts containing newline (and possibly
other) characters are involved:
> {code:sql}
> cqlsh:test> create table if not exists copytest (id int primary key, t text);
> cqlsh:test> insert into copytest (id, t) values (1, 'This has a newline
>         ... character');
> cqlsh:test> insert into copytest (id, t) values (2, 'This has a quote " character');
> cqlsh:test> insert into copytest (id, t) values (3, 'This has a fake tab \t character
(typed backslash, t)');
> cqlsh:test> select * from copytest;
>  id | t
> ----+---------------------------------------------------------
>   1 |                           This has a newline\ncharacter
>   2 |                            This has a quote " character
>   3 | This has a fake tab \t character (entered slash-t text)
> (3 rows)
> cqlsh:test> copy copytest to '/tmp/copytest.csv';
> 3 rows exported in 0.034 seconds.
> cqlsh:test> 
> cqlsh:test> copy copytest to '/tmp/copytest.csv';
> 3 rows exported in 0.034 seconds.
> cqlsh:test> copy copytest from '/tmp/copytest.csv';
> 3 rows imported in 0.005 seconds.
> cqlsh:test> select * from copytest;
>  id | t
> ----+-------------------------------------------------------
>   1 |                          This has a newlinencharacter
>   2 |                          This has a quote " character
>   3 | This has a fake tab \t character (typed backslash, t)
> (3 rows)
> {code}
> I tried replacing \n in the CSV file with \\n, which just expands to \n in the table;
and with an actual newline character, which fails with error since it prematurely terminates
the record.
> It seems backslashes are only used to take the following character as a literal
> Until this is fixed, what would be the best way to refactor an old table with a new,
incompatible structure maintaining its content and name?



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Mime
View raw message