2016-11-19 1 views
0

J'essaie de copier à partir d'un fichier CSV, j'ai à la fois 1 horodatage et une colonne de temps. Essayer de tester avec quelques lignes à commencer par:Cassandra COPIE DE colonnes Time et Timestamp

cqlsh:tests> CREATE TABLE testts (
     ...     ID int PRIMARY KEY, 
     ...     mdate timestamp, 
     ...     ttime time); 
cqlsh:tests> INSERT INTO testts (ID , mdate, ttime) 
     ... VALUES (1, '2015-10-12', '1055') ; 
cqlsh:tests> INSERT INTO testts (ID , mdate, ttime) 
     ... VALUES (2, '2014-06-25', '920') ; 
cqlsh:tests> select * from testts; 

id | mdate     | ttime 
----+--------------------------+-------------------- 
    1 | 2015-10-12 07:00:00+0000 | 00:00:00.000001055 
    2 | 2014-06-25 07:00:00+0000 | 00:00:00.000000920 

(2 rows) 

Les travaux ci-dessus, maintenant j'essayer le fichier d'importation

cqlsh:tests> COPY testts (ID, 
     ...   mdate, 
     ...   ttime) 
     ... FROM 'c:\cassandra228\testtime.csv' WITH HEADER = FALSE AND DELIMITER = ',' AND DATETIMEFORMAT='%Y/%m/%d'; 
Using 3 child processes 

Starting copy of tests.testts with columns [id, mdate, ttime]. 
Failed to import 1 rows: ParseError - Failed to parse 1130 : can't interpret '1130' as a time, given up without retries 
Failed to import 1 rows: ParseError - Failed to parse 1230 : can't interpret '1230' as a time, given up without retries 
Failed to import 1 rows: ParseError - Failed to parse 930 : can't interpret '930' as a time, given up without retries 
Failed to process 3 rows; failed rows written to import_tests_testts.err 
Processed: 3 rows; Rate:  0 rows/s; Avg. rate:  1 rows/s 
3 rows imported from 1 files in 3.269 seconds (0 skipped). 

Mon Timestamp coulmn est formaté AAAA/MM/JJ, jusqu'à ce que je l'ai donné DATETIMEFORMAT = '% Y /% m /% d' J'obtiendrais une erreur sur la colonne d'horodatage mais après que cette erreur s'est arrêtée.

fichier CSV: 3,2010/02/08.930 4,2015/05/20,1130 5,2016/08/15,1230

Comment puis-je résoudre ce problème.

Merci beaucoup

+0

Montrez-nous votre schéma et une ligne de la csv –

+0

est ici la chose –

+0

qui cassandra la version cql utilisez-vous? –

Répondre

0

je dois vérifier avec la même schéma et les données avec cqlsh de cassandra-2.2.4 Toutes les valeurs sont insérées sans aucune erreur.

Mais avec cassandra-2.2.8 cqlsh, Il me donne la même erreur que le vôtre. Vous pouvez corriger le petit changement dans le code cqlsh.

1. Ouvrez le fichier copyutil.py. Dans mon cas, c'était /opt/apache-cassandra-2.2.8/pylib/cqlshlib/copyutil.py
2. Trouver la méthode convert_time() et a changé à ce

def convert_time(v, **_): 
    try: 
     return Time(int(v)) 
    except ValueError, e: 
     pass 
    return Time(v) 
+0

Merci pour cela, ** J'ai essayé d'essayer cela ** mais de toute façon maintenant, je suis entré dans le désordre d'indentation Python. Quoi que je fasse, je continue d'avoir une erreur d'indentation, je ne peux même pas revenir en arrière. En utilisant notepad ++ je pense qu'il est indenté correctement mais ne peut pas faire apparaître cqlsh Fichier "C: \ Cassandra228 \ apache-cassandra \ bin \ .. \ pylib \ cqlshlib \ copyutil.py", lin et 1901 retour temps (v) ^ IndentationError: attendu un bloc indenté. Je ne sais pas comment résoudre ce problème - j'ai essayé de commenter, aussi eclipse/Pylib pas d'aide. Pouvez-vous partager une copie du fichier, sinon je vais simplement devoir réinstaller Cassandra - totalement bloqué –

+1

J'ai corrigé le bug de compilation en quelque sorte (ouf!) Notepad ++ ** Afficher les caractères spéciaux ** –

+0

Voici mon fichier copyutil https: // lecteur .google.com/open? id = 0B3G1hA-Owg0SNThLTW11UGRfZlU –