Je convertis une base de données sqlite3 en mysql.Regexp pour remplacer les guillemets dans les instructions d'insertion de base de données
J'ai un bon fichier de commande pour sed qui modifie AUTOINCREMEMT et les autres choses nécessaires, mais je suis coincé sur le dernier: guillemets doubles.
sqlite3 format de sauvegarde:
CREATE TABLE "products" (
"id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
"name" varchar(255),
"desc" varchar(255));
INSERT INTO "products" VALUES(1,'Flux Capacitor',
'This is the "real" thing.\nPromise!')
Pour la première déclaration, je peux remplacer tous avec des guillemets doubles et MySQL contre-apostrophes heureux.
Cependant, les informations sur mon produit comportent des guillemets dans les données. Comment puis-je exclure ces éléments d'être remplacés? J'essayais de remplacer seulement ces doubles guillemets par un espace réservé, alors je pourrais remplacer toutes les autres guillemets doubles, alors je pourrais changer l'espace réservé, mais mon regex-fu n'est pas à la hauteur.
C'était aussi loin que je suis:
/"[^"]*"/s
... pour faire correspondre les textes cités doubles, mais je ne pouvais pas comprendre comment qualifier que seuls les guillemets doubles à l'intérieur des guillemets simples doivent être adaptées.
Assurez-vous que soit vous n'avez pas, ou ne peut traiter les cas suivants: * échappées apostrophes * des chaînes entre guillemets simples qui couvrent une fin de ligne Il pourrait être plus facile de remplacer tous les guillemets simples avec un autre personnage, puis les convertir en arrière. Combien de cas avez-vous? Si vous tentez une importation et que vous l'ignorez, vous pouvez compter les erreurs à la fin. – TheJacobTaylor