The UNIX and Linux Forums  


Go Back   Les systèmes UNIX et Linux Forums > Top Forums > UNIX pour les nuls Questions et réponses
.
google unix.com



UNIX pour les nuls Questions et réponses Si vous ne savez pas où poster un UNIX ou Linux question, post it here. Tous les systèmes UNIX et Linux, débutants bienvenus!

Plus d'UNIX et Linux Forum Sujets Vous trouverez peut-être utile
Fil Thread Starter Forum Réponses Last Post
Lire en csv Hash tableau? kinmak De programmation et de script Shell 1 05-07-2008 11:35 AM
créer une matrice de caractères de la tenue sring then echo tableau. rorey_breaker De programmation et de script Shell 5 09-28-2007 09:42 AM
À partir du fichier d'Array Rock De programmation et de script Shell 2 02-08-2007 06:10 AM
Dump un tableau dans un fichier IMD De programmation et de script Shell 3 08-31-2006 11:04 AM
Comment lire les éléments d'un tableau dynamique en bash? haisubbu UNIX pour les nuls Questions et réponses 1 08-29-2006 03:19 AM

Closed Thread
English Japanese Spanish French German Portuguese Italian Dutch Swedish Russian Norwegian Hungarian Hebrew Danish Bulgarian Greek Powered by Powered by Google
 
LinkBack Thread Tools Recherche sur ce Thread Rate Thread Modes d'affichage
  #1 (permalink)  
Old 10-05-2007
pinky pinky is offline
Registered User
  
 

Date d'inscription: juillet 2007
Posts: 33
Comment lire du fichier txt et l'utiliser comme un tableau

Salut les gars

Comment u all doing?

J'ai de la période difficile de parvenir à cet égard, j'ai un système Unix. Ksh script qui appelle
script sql

En ce moment je harcoded colonne id dans le script SQL, mais je tiens à les lire à partir d'un fichier txt
1084,1143,1074,1080,1091,1090,1101,1069,1104,1087,1089,1081

Je veux lire ce fichier comme un tableau dans mon script SQL


Mon script ksh est



#! / usr / bin / ksh
Dirname \u003d `dirname $ 0`
# Mis en place l'environnement pour Oracle basée SMO instance de la base
. Dirname $ / defaults_env.ksh

echo "Entrez la région (soit 001 ou 002):"
Lire sdzone;
l'exportation userfile \u003d "cvsusers.txt"
LOGFILE \u003d $ dirname / cvs_users_defaults.log
TIME \u003d `date`

# vérifie si les fichiers de log est présent, sinon le crée
if [-a $ dirname / cvs_users_defaults.log]
puis
:
autre
touch $ dirname / cvs_users_defaults.log
fi

# Vérifier si un fichier de données (cvsusers.txt) existe pour une charge.
if [-a dirname $ / $ userfile]
puis
# La liste des ID utilisateur est fourni à partir du fichier userId


Infile \u003d $ userfile;
echo "$ INFILE en utilisant le fichier comme entrée d'ID utilisateur";
echo "";
echo "le processus de démarrage $ TIME">> $ LOGFILE
echo "Appel de procédure pour initialiser les utilisateurs"
pour userId dans `cat INFILE $`
faire
echo "Le stockage par défaut de l'utilisateur pour l'utilisateur" userid $>> $ LOGFILE
userIdLength \u003d `expr length $ userid`
if [$ userIdLength-gt 8]
puis
echo "Longueur de userid" $ userid "est trop long">> $ LOGFILE
autre
echo "Connexion à SQL">> $ LOGFILE

if [[sdzone $ \u003d '001 ']], puis
sqlplus-s $ ZONE1_USERNAME_525 / $ ZONE1_PASSWRD_525 @ $ ZONE1_DBNAME_525 \ @ dirname $ / sql / cvs_users_defaults.sql $ userid>> LOGFILE
echo "Connected to SQL">> $ LOGFILE


elif [[sdzone $ \u003d «002»]], puis
sqlplus-s $ ZONE2_USERNAME_525 / $ ZONE2_PASSWRD_525 @ $ ZONE2_DBNAME_525 \ @ dirname $ / sql / cvs_users_defaults.sql $ userid>> LOGFILE
echo "Connected to SQL">> $ LOGFILE


autre
echo "code de région incorrect!"
sortie;
fi

fi
fait


# renommer le fichier après traitement
logtime \u003d `date +% Y% m% d% H% M% S" `
newUserFile \u003d "cvs_users_processed_" $ logtime ". txt"
mv $ userfile newUserFile $

echo "Fin du processus de mise à l'utilisateur par défaut $ TIME">> $ LOGFILE
echo "Vérifiez le fichier journal à $ LOGFILE"
exit 0
autre
# SI "custsoncologyusers.txt" Le fichier n'existe pas dans DIRNAME terminera alors gracieusement
echo "Pas d'utilisateur de fichier par défaut ($ userfile) est disponible à charge"
echo "Aucun fichier d'utilisateur par défaut ($ userfile) est disponible pour charger">> $ LOGFILE
echo "Ending processus utilisateur par défaut avec un code de retour 0 au temps $">> $ LOGFILE
exit 0
fi


Ceci est mon script SQL (cvs_users_defaults.sql)

QUAND SQLERROR EXIT SQL.SQLCODE;
mis sur serveroutput;
mis hors de vérifier;
mis feedback off;

déclarer
userId s_user_cust_acct.user_id% TYPE: \u003d '& 1';
T_col_id_tab TYPE EST TABLE DES nombre;
my_col_id t_col_id_tab;
T_col_seq_num_tab TYPE EST TABLE DES nombre;
my_col_seq_num t_col_seq_num_tab;
T_all_col_id_tab TYPE EST TABLE DES nombre;
all_col_id t_all_col_id_tab;
tCount nombre;
commencer
SELECT COUNT (*)
en tCount
de s_column_atrb
où user_id \u003d UPPER (userId)
et screen_typ_cd \u003d 0;
if (tCount> 0) THEN
dbms_output.put_line ( 's_column_atrb mise à jour' | | UserID);

- Pour les ordres (lesJ'ai codé en dur le tableau ici, mais j'ai envie de lire à partir de ce script. Ksh en l'alimentant avec un fichier txt)
all_col_id: \u003d t_all_col_id_tab (1069,1071,1072,1073,1074,1075,1076,1077,1078,1080,1081,1082,1083,1084,1085,1086,108 7,1088,1089,1090,1091,1101, 1102,1103,1104,1114,1115,1116,1117,1118,1119,1120,1122,1123,1124,1125,112 6,1127,1128,1129,1130,1131,1132,1133,1134,1135,1136 , 1137,1138,1139,1140,1141,1142,1143,1144,1145,114 6,1147,1148,1149,1150,1151,1152,1154,1169,1178,1182,1183,1195);
my_col_id: \u003d t_col_id_tab (1084,1143,1074,1080,1091,1090,1101,1069,1104,1087,1089,1081);

my_col_seq_num: \u003d t_col_seq_num_tab (4,12,2,6,7,8,10,1,9,3,5,11);

For i in 1 .. 12 LOOP
dbms_output.put_line ( 'my_col_id (' | | i | | ') est' | | my_col_id (i));
mise à jour s_column_atrb
mis show_hide_ind \u003d 'Y', column_seq_num \u003d my_col_seq_num (i)
où user_id \u003d UPPER (userId)
et screen_typ_cd \u003d 0
et col_id \u003d my_col_id (i);
END LOOP;
fin;
/
sortie


tout organisme peut aider à obtenir ce faire
Merci d'avance
Pinky
  #2 (permalink)  
Old 10-07-2007
fpmurphy's Avatar
fpmurphy fpmurphy is offline Forum Staff  
Modérateur
  
 

Join Date: Dec 2003
Lieu: Florida
Messages: 1937
Le plus simple serait de construire "cvs_users_defaults.sql" à la volée avant
vous l'exécutez.

Par exemple: le fichier «chef» contiendrait


Code:
WHENEVER SQLERROR EXIT SQL.SQLCODE;
set serveroutput on;
set verify off;
set feedback off;

declare
userId s_user_cust_acct.user_id%TYPE := '&1';
TYPE t_col_id_tab IS TABLE OF number;
my_col_id t_col_id_tab;
TYPE t_col_seq_num_tab IS TABLE OF number;
my_col_seq_num t_col_seq_num_tab;
TYPE t_all_col_id_tab IS TABLE OF number;
all_col_id t_all_col_id_tab;
tcount number;
begin
select count(*)
into tcount
from s_column_atrb
where user_id = UPPER(userId)
and screen_typ_cd = 0;
if (tcount > 0) THEN
dbms_output.put_line('updating s_column_atrb' || userId);

Le fichier «queue» devrait contenir:


Code:
my_col_seq_num := t_col_seq_num_tab(4,12,2,6,7,8,10,1,9,3,5,11); 

For i in 1..12 LOOP
dbms_output.put_line('my_col_id(' || i || ') is ' || my_col_id(i));
update s_column_atrb
set show_hide_ind = 'Y', column_seq_num = my_col_seq_num(i)
where user_id = UPPER(userId)
and screen_typ_cd = 0
and col_id = my_col_id(i);
END LOOP;
end;
/
exit

et le fichier des «ordres» devrait contenir le code «modifiable»


Code:
-- Orders
all_col_id := t_all_col_id_tab(1069,1071,1072,1073,1074,1075,1076,1077,1078,1080,1081,1082,1083,1084,1085,1086,108 7,1088,1089,1090,1091,1101,1102,1103,1104,1114,1115,1116,1117,1118,1119,1120,1122,1123,1124,1125,112 6,1127,1128,1129,1130,1131,1132,1133,1134,1135,1136,1137,1138,1139,1140,1141,1142,1143,1144,1145,114 6,1147,1148,1149,1150,1151,1152,1154,1169,1178,1182,1183,1195);
my_col_id := t_col_id_tab(1084,1143,1074,1080,1091,1090,1101,1069,1104,1087,1089,1081);

Ensuite, vous modifiez votre script shell pour créer le script SQL comme suit:

commandes tête de chat Tail> cvs_users_defaults.sql

avant d'invoquer cvs_users_defaults.sql
  #3 (permalink)  
Old 10-07-2007
pinky pinky is offline
Registered User
  
 

Date d'inscription: juillet 2007
Posts: 33
J'apprécie votre aide, mais je me suis embrouillé totalement et affiché un nouveau fil de discussion liés à cette
Merci de répondre
  #4 (permalink)  
Old 10-08-2007
pinky pinky is offline
Registered User
  
 

Date d'inscription: juillet 2007
Posts: 33
Hey Guys

Je voulais poser ma question en détail ce que je voulais réaliser, c'est

J'ai fichier txt
qui ressemble à ceci

x.txt
5
8
10
15
17
19

J'ai abc.ksh et xyz.sql scripts

Je veux lire le fichier x.txt dans un tableau en abc.ksh (shell script) et passer ce tableau à xyz.sql (script SQL) où je voulais lire les valeurs de ce tableau et l'utilisation de ces valeurs dans la logique de XYZ. SQL (script SQL).


Merci
Apprciate aucune aide
Je suis désespéré et avait besoin d'aide
Pinky
  #5 (permalink)  
Old 10-08-2007
pinky pinky is offline
Registered User
  
 

Date d'inscription: juillet 2007
Posts: 33
Hey fpmurphy

si je veux construire mon fichier. SQL à la volée que je dois sauver la tête et la queue et des ordonnances qu'il head.sql, tail.sql, et orders.sql
can u plz élaborer

Je me demande simplement si il ya une manière que nous pouvons envoyer des tableaux comme paramètres à partir d'un script shell script SQL

Merci beaucoup pour toute l'aide ur
Pinky
Closed Thread

Bookmarks

Thread Tools Recherche sur ce Thread
Recherche sur ce Thread:

Recherche avancée
Modes d'affichage Rate this thread
Rate this thread:

Règles de messages
Tu mai pas de nouvelles discussions: nonoui
Tu mai pas envoyer des réponses:
Tu mai pas envoyer des pièces jointes
Tu mai pas modifier vos messages

BB code est Sur
Smilies sont Sur
[IMG] code est Sur
Le code HTML est Hors tension
Trackbacks sont Sur
Pingbacks sont Sur
Refbacks sont Sur




Toutes les heures sont au format GMT -4. Le temps est maintenant 03:20 AM.


Powered by: vBulletin, Copyright © 2000 - 2006, Jelsoft Enterprises Limited. Traductions Langue Powered by .
vBCredits v1.4 Copyright © 2007 - 2008, PixelFX Studios
Les systèmes UNIX et Linux Forums Content Copyright © 1993-2009. Tous droits Reserved.Ad de gestion par RedTyger

Content Relevant URLs par vBSEO 3.2.0