2010-09-16 7 views
0

Oui, j'ai déjà posé cette question, mais le problème est beaucoup plus spécifique. La dernière fois j'ai voulu ignorer les 2 premières et la dernière ligne du fichier. Mais il m'a semblé que n'importe qui pouvait mettre autant de lignes qu'il le voulait avant et après les choses que je voulais lire, et dans ce cas, le code que j'ai mis en place va en pot.Lecture de certaines lignes d'un fichier texte

exemple de fichier

 
USE [Shelley's Other Database] 
CREATE TABLE db.exmpcustomers( 
fname varchar(100) NULL, 
lname varchar(100) NULL, 
dateofbirth date NULL, 
housenumber int NULL, 
streetname varchar(100) NULL 
) ON [PRIMARY] 

Ce que je dois faire est de déterminer où (étant mes départs de données FNAME - mais rappelez-vous qu'il pourrait être appelé quoi que ce soit, donc je ne peux pas utiliser une expression régulière à la recherche de ' f '), où il se termine (le dernier NULL), puis lire dans cela. Ou, vous le savez, lisez dans le fichier et sélectionnez ces données; peu importe.
J'ai pensé à utiliser regex pour chercher les parenthèses, mais ne prendrait-il pas aussi les parenthèses dans mes types de données?

Des idées? Tout va aider, je suis totalement coincé.

EDIT

Oh, et, le fichier original a en fait des espaces/onglets avant les données (indentation), mais je ne suis pas sûr si cela change quoi que ce soit.

+0

Ce * est * un double de http://stackoverflow.com/questions/3718112/-there-any-way-to-ignore-reading-in-certain-lines-in-a-text-file – chiccodoro

Répondre

0

l'expression régulière que j'ai fournie dans votre autre question correspondrait parfaitement à vos données. Votre question est en réalité une copie de l'autre.

+0

Yep , Je vois ça maintenant. Que je suis bête. Vous avez un peu de problème maintenant, pensez que vous pourriez m'aider? –

+0

@New Start: Bien sûr, quel problème voulez-vous dire maintenant? Si c'est un nouveau, créez simplement une nouvelle question. Si c'est encore à propos de ce sujet, je proposerais de revenir à http://stackoverflow.com/questions/3718112/-there-any-way-to-ignore-reading-in-certain-lines-in-a- texte-fichier et éditez votre question là/laissez un commentaire – chiccodoro

2

Je voudrais juste regex greedy-match des données entre les crochets. Tant que ) suit ON, et ( précède CREATE, les parenthèses dans le contenu n'ont pas vraiment d'importance.

Si vous ne connaissez pas trop bien les scripts SQL, est-ce une bonne idée d'exposer le contrôle à d'autres personnes? Pourquoi ne pas créer un DSL simple qui permet les mêmes avantages? par exemple:

DATABASE databasenamegoeshere 
TABLE tablenamegoeshere 
FIELD name type default 
FIELD name type default 
FIELD name type default 

Et puis traduisons cela en code SQL correspondant? Semble un peu plus sécurisé .. Ou doit-il être exécutable SQL?

+0

+1 Bien que ce ne soit pas idéal, c'est probablement sur cette voie que j'irais – w69rdy

+0

Je suis fatigué de le faire car je ne comprends pas complètement les scripts SQL, et je ne saurais pas si tous les scripts SQL (de ce type) doivent être écrit comme ça. Bien que je suppose qu'ils le font. Comme, les données doivent être entre parenthèses .. –

+1

Oui, ce n'est pas idéal - je n'ai pas assez d'expérience avec SQL pour être certain qu'il n'y a pas de crochets potentiellement ailleurs. Vous pouvez toujours extraire toutes les données entre parenthèses, puis parcourir chaque recherche de celui qui contient 'NULL', ou un autre mot-clé garanti? – Jeriko

Questions connexes