2014-07-10 7 views
1

Je me demandais comment importer du contenu d'un fichier tex dans une base de données (javaDB). C'est le code que j'ai mais je reçois une erreur lors de l'exécution. Je voudrais également indiquer que la clé primaire de cette table est incrémentée automatiquement.Comment importer un fichier texte dans javaDB?

CALL SYSCS_UTIL.SYSCS_IMPORT_TABLE 
(null,'EXPENDITURE','C:\Users\Me\Desktop\textforimport.txt',null,null,null,0); 
// This is my import code 

// Ceci est mon erreur

Executed successfully in 0.003 s. 
Line 1, column 1 

Error code 30000, SQL state 38000: The exception 'java.sql.SQLException: 
Attempt to modify an identity column 'EXPENDITURE_ID'.' was thrown while evaluating an expression. 

Error code 99999, SQL state 42Z23: Attempt to modify an identity column 'EXPENDITURE_ID'. 
Line 4, column 1 

Execution finished after 0.003 s, 1 error(s) occurred. 

// Code pour la création de la table

create table Expenditure (
Expenditure_ID integer not null primary key generated always as identity (start with 1,increment by 1), 
Expenditure_Description varchar (75) not null, 
Expense double not null, 
Expense_Date date not null 
); 

Maintenant, je ne suis pas expert en java, mais me demande si quelqu'un appelle me aider . Je vous serais reconnaissant. Merci

Répondre

0

Je suppose que c'est un problème SQL simple, pas un problème Java.

Depuis la colonne Expenditure_ID a été créée comme « clé primaire générée toujours que l'identité », JavaDB pour vous générer automatiquement. Et, lorsque vous essayez de manipuler une colonne d'identité, vous recevrez l'erreur tentative de modification d'une colonne d'identité.

Vous pouvez essayer 2 approches:

1) Retirer du textforimport.txt, la colonne/données Expenditure_ID. Il suffit d'importer Expenditure_Description, Dépense et Expense_Date. Comme je l'ai dit, javaDB va attribuer un identifiant à chaque ligne.

ou

2) Si vous devez définir le Expenditure_ID vous-même, changer le Expenditure_ID colonne dans le tableau des dépenses. Essayez de le créer uniquement avec "entier non nul" (sans la clé primaire).

2

il suffit de changer la déclaration de votre Expenditure_ID à « GÉNÉRÉ PAR DÉFAUT qu'Identity »,

Une colonne d'identité qui est générée par défaut n'incrémenter et utiliser la valeur par défaut sur les insertions lorsque aucune valeur explicite n'est donnée. Contrairement aux colonnes GENERATED ALWAYS, vous pouvez spécifier une valeur particulière dans une instruction d'insertion à utiliser à la place de la valeur par défaut générée. source

Questions connexes