Bonjour,
J'ai fais un petit script shell qui permet de transformer un texte d'APACHE access log en un fichier texte. Et a l'aide de se fichier texte avec SqlLdr , je peu insérer ces donnée dans une table de base de données.
Mon premier problème est:
J'ai besoin de 'Trapper' si ma chaine contient un \n (l'équivalent d'un <Enter> , nah?) , Comment je pourrais faire?
Deuxieme probleme:
J'ai ma ligne d'access log parsé , qui me donne une chaine semblable a ceci:
Comment pourrais-je faire en sorte que chaque entrée soient determiné par un ' ;' parce que comme c'est en se moment j'ai mon fichier config qui ressemble a ceci :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 ; ; ; ;15 ; ; ; ; ;cacpx1oruasd01 ; ; ;- ; ; ; ; ; ; ; ; ;"POST/oprocmgr-service/oprocmgr-service ;200 ;15/Jan/2008:02:36:25-0500 ; ; ;- ; ; ; ; ; ;
(La raison pourquoi mon premier champ a une mesure astronomique, est que tout la ligne qui serait sensé aller dans ses colones respectives, s'envont dans la premiere colone. On dirait qu'il ne prend pas le ; comme délimiteur de champ...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39 LOAD DATA INFILE 'Log.out' APPEND INTO TABLE T_APACHEAccesLog FIELDS TERMINATED BY ';' TRAILING NULLCOLS ( Percent varchar(622224) , RemoteIP varchar(64) , LocalIP varchar(64) , ReturnSize varchar(64) , ReturnSizeCLF varchar(64) , CookieServer varchar(64) , MicroSec varchar(64) , EnvironementVar varchar(64) , FileName varchar(64) , RemoteHost varchar(64) , RequestProtocol varchar(64) , HeaderLineRequest varchar(64) , RemoteLogName varchar(64) , RequestMethod varchar(64) , FromAnotherModule varchar(64) , OnTheReply varchar(64) , CanonicalPortServ varchar(64) , PortLocalOrRemote varchar(64) , ChildProcessId varchar(64) , ChildProcessIdOrThread varchar(64) , QueryString varchar(2048) , FirstLineQuery varchar(2048) , Status varchar(64) , TimeStandard varchar(64) , TimeFormated varchar(64) , TimeForRequestSec varchar(64) , RemoteUser varchar(64) , URL varchar(64) , CanonicalServerName varchar(64) , ServerName varchar(64) , ConnectionStatusCompleted varchar(64) , ReceivedByteWHeader varchar(64) , SentByteWHeader varchar(64) )
Merci a vous de m'aider.
Partager