Avez-vous des astuces pour générer des instructions SQL, principalement Insère, dans Excel pour divers importation de données de scénarios?
Je suis vraiment fatigué d'écrire des formules avec comme
="INSERT INTO Table (ID, Name) VALUES (" & C2 & ", '" & D2 & "')"
Le point-virgule doit être à l'intérieur de la dernière citation double avec une parenthèse fermante. Lors de l'ajout de guillemets simples autour d'une chaîne, n'oubliez pas de les ajouter à l'extérieur de votre cellule sélectionnée.
(espaces ajoutés pour la visibilité de la supprimer avant de l'insérer)
=CONCATENATE("insert into table (id, name) values (",C2,",' ",D2," ');")
Voici un autre point de vue:
=CONCATENATE("insert into table (id, date, price) values (",C3,",'",D3,"',",B3,");")
Parfois je utiliser des substituts pour remplacer des motifs dans la commande SQL au lieu d'essayer de construire la commande sql de la concaténation. Dire que les données sont dans les Colonnes A & B. Insérez une ligne du haut. Dans la cellule C1 place la commande SQL à l'aide de modèle:
Puis dans les lignes 2, place de la formule excel:
Notez l'utilisation de l'absolu de la cellule d'adressage
$C$1
pour obtenir le patron. Particulièrement agréable lorsque l'on travaille avec des char ou varchar et d'avoir à mélanger les guillemets simples et doubles dans la concaténation. Comparez à:Une autre chose qui m'a mordu plus d'une fois est d'essayer d'utiliser excel pour traiter certains caractères ou varchars qui sont numérique, sauf qu'ils ont les zéros non significatifs tels que 007. Excel convertir au nombre de 7.
J'ai l'habitude d'utiliser la concaténation de Chaîne de la méthode pour créer SQL insère dans Excel. Il peut bien fonctionner, mais peut-être aussi un peu de temps et 'délicat'.
J'ai créé un fichier Excel Add-In qui permet de générer des plaquettes Excel facile :
(voir la vidéo au bas de la page)
http://www.howinexcel.com/2009/06/generating-sql-insert-statements-in-excel.html
http://www.querycell.com/SQLGenerator.html
http://www.oneclickcommissions.com/excel-statement.html
le VBA approche serait:
déclarer votre chaîne et affecter votre instruction SQL comme ceci
Excel approche est similaire, mais en utilisant la
SUBSTITUTE
fonction.Je préfère cette approche parce qu'elle rend le texte SQL lisible et évite tous les ennuyeux & et concaténer des problèmes. Oui, il faut une cellule supplémentaire, mais sa vaut le coup pour la piste d'audit.
Je connais cette douleur. J'ai fini par écrit à ce sujet sur mon blog...deux fois.
J'ai créé une fonction qui concatène une plage de cellules avec plusieurs options. Ce sera toujours séparées par des virgules les valeurs, mais aussi éventuellement ajouter des guillemets simples et/ou des parenthèses, en tant que de besoin.
Donc, vous écrivez la partie la plus facile de l'instruction sql.
ou
Et la coutume fonction excel ci-dessous va tourner à valeurs dans une plage de feuille de calcul dans un joli string pour vous.
Pourquoi êtes-vous de la génération de SQL dans Excel? Il est plus facile et beaucoup plus rapide pour exporter une feuille de calcul dans un fichier CSV, et ensuite utiliser un outil pour importer ce fichier dans une base de données SQL. Par exemple MySQL
LOAD DATA INFILE
déclaration.Excuses pour ne pas répondre directement à votre question, et je sais que ce n'est pas une solution pour toutes les circonstances.
J'ai fait ça hier, et oui, c'est ennuyeux pour obtenir les guillemets droit. Une chose que j'ai faite était d'avoir un nom de cellule confinée à un seul devis. Type A1
="'"
(égal, double citation, l'apostrophe, guillemets doubles), puis le nom de cette cellule "CITATION" en tapant que dans la boîte sur la gauche de la plus bas de la barre d'outils.Parfois, la construction de SQL insert cela semble être la façon la plus simple. Mais vous s'en lasse vite, et je ne pense pas qu'il y a "intelligents" les moyens de le faire (autre que peut-être les macros/programmation VBA).
Je veux vous éviter d'Excel et d'explorer d'autres idées:
Exporter un fichier excel au format csv peut être une alternative (voir le projet de Loi Krawin après une nouvelle affiche, je ne peux pas ajouter de commentaire pour le moment). Cependant, soyez averti que vous devrez probablement modifier la mise en forme de votre champs de date au format aaaa-mm-jj, sinon la date de colonnes montrent tous 00/00/00 – c'est parce que MySQL utilise une autre date fomat de Microsoft Excel. Vous pouvez également utiliser OpenOffice pour enregistrer le fichier csv.
Comment à propos de l'interrogation et de l'insertion des données du classeur Excel à la source à l'aide de ACE/Jet (un.k.un. L'accès) SQL? Cela nécessite un AS/Jet qui pourrait être une autre feuille de calcul Excel. Voici un exemple rapide:
Pour l'Insertion de données dans la table sql