J'ai une requête logparser qui produit une sortie correcte lors de l'exécution sur l'écran ou le fichier CSV, mais quand je l'envoie à SQL (MySQL dans ce cas), les données sont foirées en haut les horodatages ont raison, mais les chaînes sont vides (non nulles, simplement vides), et les colonnes entières affichent leur valeur maximale (dans ce cas, medium int = 8388607).Sortie logparser vers SQL produisant des chaînes vides et des entiers valeur maximale
Voici le tableau:
CREATE TABLE `penetration`
(
`id` INT(10) NOT NULL AUTO_INCREMENT,
`timestamp` DATETIME NULL DEFAULT NULL,
`campaign` VARCHAR(10) NULL DEFAULT NULL,
`build_date` DATE NULL DEFAULT NULL,
`results` MEDIUMINT(8) NULL DEFAULT NULL,
`p1` MEDIUMINT(8) NULL DEFAULT NULL,
`p2` MEDIUMINT(8) NULL DEFAULT NULL,
`p3` MEDIUMINT(8) NULL DEFAULT NULL,
`p4` MEDIUMINT(8) NULL DEFAULT NULL,
`p5` MEDIUMINT(8) NULL DEFAULT NULL,
`p6` MEDIUMINT(8) NULL DEFAULT NULL,
`p7` MEDIUMINT(8) NULL DEFAULT NULL,
`p8` MEDIUMINT(8) NULL DEFAULT NULL,
`p9` MEDIUMINT(8) NULL DEFAULT NULL,
`p10` MEDIUMINT(8) NULL DEFAULT NULL,
`p26` MEDIUMINT(8) NULL DEFAULT NULL,
`accounts` MEDIUMINT(8) NULL DEFAULT NULL,
`logon` VARCHAR(10) NULL DEFAULT NULL,
`client` VARCHAR(2) NULL DEFAULT NULL,
`facility` VARCHAR(3) NULL DEFAULT NULL,
`type` VARCHAR(2) NULL DEFAULT NULL,
INDEX `id` (`id`)
)
COLLATE='utf8_general_ci'
ENGINE=MyISAM
AUTO_INCREMENT=1668
;
La requête de travail à partir de la ligne de commande (les valeurs nulles sont là pour distiller le problème à son essence pour le dépannage):
"SELECT NULL, timestamp, TRIM(campaign) AS campaign, TO_DATE(timestamp) AS build_date, TO_INT(results) AS results, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL FROM penetration.tsv"
La sortie de l'écran (ce qui est correct) ressemble à ceci - notez que les colonnes campagne et résultat ont des données correctes):
<NULL> 2015-11-16 23:30:14 BLUCCHM1 2015-11-16 219 <NULL> <NULL> <NULL> <NULL> <NULL> <NULL> <NULL> <NULL> <NULL> <NULL> <NULL> <NULL> <NULL> <NULL> <NULL> <NULL>
<NULL> 2015-11-16 23:30:14 BLUCUCH1 2015-11-16 1330 <NULL> <NULL> <NULL> <NULL> <NULL> <NULL> <NULL> <NULL> <NULL> <NULL> <NULL> <NULL> <NULL> <NULL> <NULL> <NULL>
Quand j'exécute ce, en essayant de pousser les données à une table de base de données, j'utilise cette requête:
logparser -i:TSV -o:SQL -dsn:directorDSN32 -database:[dbname] -username:[username] -password:[password] -driver:"MySQL ODBC 5.1 Driver" -server:[ip address] "SELECT NULL, timestamp, TRIM(campaign) AS campaign, TO_DATE(timestamp) AS build_date, TO_INT(results) AS results, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL FROM penetration.tsv TO penetration"
La requête est exécutée avec succès, mais la table finit par ressembler à cela, remarquez les horodateurs sont justes, la campagne colonne est vide, et la colonne des résultats a la valeur maximale pour MEDIUMINT:
Je suis nouveau, je ne peux pas intégrer une image, mais la sortie de la table ressemble à ceci:
id timestamp campaign build_date results ...
1 2015-09-16 17:06:09 2015-09-16 8,338,607 (NULL)
2 2015-09-16 17:06:09 2015-09-16 8,338,607 (NULL)
Merci d'avance pour toute aide qui peut être offerte. J'imagine que la solution est quelque chose de simple, mais je deviens fou en essayant de le comprendre.
Eh bien, la prise en charge de non-MS SQL pourrait être moins qu'idéale. Pourriez-vous par hasard essayer ceci avec les colonnes entières déclarées comme un type entier de 32 bits, et avec la colonne de campagne déclarée comme un varchar 255-char? –