web-dev-qa-db-fra.com

Utilisation de SQL LOADER dans Oracle pour importer un fichier CSV

Je suis assez nouveau pour les bases de données et la programmation. Je ne suis pas très bon avec le jargon informatique alors restez avec moi. J'ai un fichier csv que j'essaie de charger dans ma base de données Oracle. Il contient des informations sur le compte telles que le nom, le numéro de téléphone, les dates de service, etc. J'ai installé Oracle 11g Release 2. C’est ce que j’ai fait jusqu’à présent étape par étape.

1) Ran SQL Loader

J'ai créé une nouvelle table avec les colonnes dont j'avais besoin. Par exemple

create table Billing ( TAP_ID char(10), ACCT_NUM char(10), MR_ID char(10), HOUSE_NUM char(10), STREET char(30), NAME char(50)

2) Cela m'a incité à créer la table. Ensuite, j'ai créé un fichier de contrôle pour les données dans le bloc-notes, situé dans le même répertoire que ma table de facturation et doté d'une extension .ctl. GIS.csv est le fichier dans lequel sont extraites les données. Il se trouve également dans le même répertoire et porte le nom Billing.ctl.

load data
infile GIS.csv
into table Billing
fields terminated by ','
(TAP_ID, ACCT_NUM, MR_ID, HOUSE_NUM, STREET, NAME)

3) Exécuter sqlldr en ligne de commande pour utiliser le fichier de contrôle.

sqlldr myusername/mypassword  Billing.ctl

C'est là que je suis coincé. J'ai vu des tutoriels vidéo de ce que je fais exactement, mais j'obtiens cette erreur:

SQL*Loader-522: lfiopn failed for file (Billing.log)

Des idées sur ce que je pourrais faire mal ici? 

Mettre à jour

Je viens de déplacer les fichiers dans un répertoire distinct et je suppose que j'ai passé l'erreur précédente. .__ En passant, oui Billing.ctl et GIS.csv se trouvent dans le même répertoire. 

Mais maintenant, j'ai une autre erreur:

'SQL*Loader-350: Syntax error at line 1.

Mot clé LOAD attendu, trouvé "ID SERV TAP" . "ID SERV TAP", "NUMERO ACCT", "ID MTR", "SERV HOUSE", "SERV STREET", "SERV ^.

Je ne comprends pas pourquoi c'est venir avec cette erreur. Mon billing.ctl a une charge.

LOAD data
infile GIS.csv
into table Billing
fields terminated by ','
(TAP_ID, ACCT_NUM, MTR_ID, SERV_HOUSE, SERV_STREET, SERV_TOWN, BIL_NAME, MTR_DATE_SET, BIL_PHONE, MTR_SIZE, BILL_CYCLE, MTR_RMT_ID)

Des pensées?

4
Mark Nelson

Sqlldr veut écrire un fichier journal dans le même répertoire que le fichier de contrôle. Mais évidemment, cela ne peut pas. Il n'a probablement pas la permission requise.

Si vous utilisez Linux ou Unix, essayez d’exécuter la commande suivante de la même façon que vous exécutez sqldr:

touch Billing.log

Cela montrera si vous avez les permissions.

Mettre à jour

La ligne de commande appropriée est:

sqlldr myusername/mypassword control=Billing.ctl
4
Codo

J'ai un fichier csv nommé FAR_T_SNSA.csv que je voulais importer directement dans la base de données Oracle. Pour cela, j'ai suivi les étapes suivantes et cela a fonctionné parfaitement. Voici les étapes à suivre:

COMMENT IMPORTER UN FICHIER CSV DANS Oracle DATABASE?

  1. Obtenez un fichier au format .csv à importer dans la base de données Oracle. Ici, cela s'appelle “FAR_T_SNSA.csv”
  2. Créez une table dans SQL avec le même nom de colonne que dans le fichier .csv . Create table Billing (iocl_id char (10), iocl_consumer_id char (10));

  3. Créez un fichier de contrôle contenant le script sql * loder . Dans le bloc-notes, tapez le script comme suit et enregistrez-le avec l'extension .ctl, en sélectionnant le type de fichier Tous les types (*). Ici, le fichier de contrôle s'appelle Billing. Et le script est comme suit:

    LOAD DATA
    INFILE 'D:FAR_T_SNSA.csv'
    INSERT INTO TABLE Billing
    FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'
    TRAILING NULLCOLS
    (
    iocl_id,
    iocl_consumer_id
    )
    
  4. Maintenant, dans la commande d'exécution de l'invite de commande:

    Sqlldr UserId/Password
    Control = “ControlFileName” 
    --------------------------------
    Here ControlFileName is Billing.
    
2
Piyush Mehtani

Essaye ça

charge les données infile 'emplacement du fichier de données' dans la table schema.tablename champs terminés par ',' éventuellement inclus par '| (champ1, champ2, champ3 ....)

Dans l'invite de commande:

sqlldr system@databasename/password control='control file location'
1
syed rizwan

Vous devez désigner le nom du fichier journal lorsque vous appelez le chargeur SQL. 

sqlldr myusername/mypassword control=Billing.ctl log=Billing.log

Je rencontrais ce problème lorsque j'appelais sql loader à partir de l'intérieur de python. L'article suivant capture tous les paramètres que vous pouvez désigner lors de l'appel de sql loader http://docs.Oracle.com/cd/A97630_01/server.920/a96652/ch04.htm

1
user2271125

"Line 1" - peut-être quelque chose à propos de Windows vs Unix Newlines? (comme j'ai vu les fenêtres 7 mentionnées ci-dessus).

0

- Étape 1: Créer une table temporaire . créer une table de facturation (char TAP_ID (10), char ACCT_NUM (10));

SELECT * FROM BILLING;

- Étape 2: Créer un fichier de contrôle.

charger des données infile IN_DATA.txt dans la table Facturation champs terminés par ',' (TAP_ID, ACCT_NUM)

- Étape 3: Créer un fichier de données d'entrée . Contenu du fichier IN_DATA.txt:

- Étape 4: Exécuter la commande à partir de l'exécution: .. client\bin> nom d'utilisateur sqlldr @ db-sis__id/password control = 'Billing.ctl'

0
VXJ8464

Si votre texte est: Joe a dit: "Fred était ici avec sa" femme "" .
Ceci est enregistré dans un fichier CSV sous le nom:
"Joe a dit:" "Fred était ici avec son" "épouse" "" "."
(La règle est que les guillemets doubles parcourent tout le champ et les guillemets sont convertis en deux guillemets). Ainsi, une simple clause optionnellement incluse par est nécessaire mais non suffisante. Les CSV sont difficiles à cause de cette règle. Vous pouvez parfois utiliser une clause Replace dans le chargeur pour ce champ mais, en fonction de vos données, cela peut ne pas être suffisant. Un prétraitement d'un fichier CSV est souvent nécessaire pour le chargement dans Oracle. Ou bien, enregistrez-le en tant que XLS et utilisez l'application Oracle SQL Developer pour l'importer dans la table. Idéal pour un travail ponctuel et moins efficace pour les scripts.

0
Mot

CHARGER DONNEES INFILE 'D:\CertificationInputFile.csv' INTO TABLE CERT_EXCLUSION_LIST ZONES TERMINÉES PAR "|" OPTIONNELLEMENT FERMÉ PAR '"' (CERTIFICATIONNAME, CERTIFICATIONVERSION)

0
Mr.T