Je pense que l'importation à l'aide de l'une des méthodes mentionnées est idéale s'il s'agit vraiment d'un fichier volumineux, mais vous pouvez utiliser Excel pour créer des instructions d'insertion:
="INSERT INTO table_name VALUES('"&A1&"','"&B1&"','"&C1&"')"
Dans MS SQL, vous pouvez utiliser:
SET NOCOUNT ON
Ne pas afficher tous les commentaires «1 ligne affectée». Et si vous faites beaucoup de lignes et qu'il y a des erreurs, mettez un GO entre les instructions de temps en temps
J'utilisais =CONCATENATE()mais utiliser le &signe conduit à une bien meilleure lisibilité!
mastazi le
1
@mastazi d'accord! Je suis passé à &lorsque je suis tombé sur la limite de paramètres il y a CONCATENATE()quelque temps, ce n'est pas un problème courant maintenant que la limite est de 255 paramètres, mais je ne pense jamais à revenir en arrière.
Hart CO
1
CONCATENATE () est la voie à suivre. Cliquez simplement sur l'icône fx dans la barre de formule pour voir ce que vous avez entré. C'est beaucoup plus propre que simplement utiliser et signer. Bien sûr, utiliser & signer est cool, mais parfois, lorsque vous avez des guillemets doubles ou simples, cela vous fera compter pour toujours ce qui manque.
ian0411
1
Ne fonctionne pas avec des citations dans les cellules. Vérifiez ma réponse pour une version corrigée.
Simon Baars
2
@PreshanPradeepa Vous pouvez utiliser la même syntaxe, SQL Server ne se soucie pas de savoir si l'entier est entre guillemets tant qu'il s'agit d'un entier valide.
Hart CO
29
Il existe un outil pratique qui permet de gagner beaucoup de temps
Ne publiez pas vos données sensibles sur le Web. Vous n'avez aucun moyen de savoir ce qu'il advient des données que vous soumettez à l'application Web. Certains de ces outils stockent vos données et les rendent publiques
GabiM
28
Vous pouvez créer une table appropriée via l'interface du studio de gestion et insérer des données dans la table comme indiqué ci-dessous. Cela peut prendre un certain temps en fonction de la quantité de données, mais c'est très pratique.
Pratique. Je vois qu'avec une colonne IDENTITY, le tampon de copie doit avoir la colonne, même si les données qu'il contient seront ignorées car les valeurs sont générées automatiquement lorsque les lignes sont insérées.
fortboise
Vous pouvez faire de votre colonne IDENTITY la dernière dans la liste des colonnes et il ne serait pas du tout nécessaire d'avoir une colonne supplémentaire.
Andrey Morozov
1
si vous ne spécifiez pas les valeurs IDENTITY dans la feuille Excel; vous pouvez modifier et réexécuter le script sql d'édition des 200 premières lignes en supprimant la colonne IDENTITY. Ainsi, lorsque vous copiez et collez les valeurs sans IDENTITY; cette méthode fonctionnera.
aozan88
Ceci est interrompu pour les champs de date et d'heure dans Excel pour toute autre personne confrontée au problème. Les données datetime sont converties en données "binaires" côté SQL pour une raison quelconque.
Kevin Vasko
1
@condiosluzverde Je vous conseillerais de poster votre propre réponse. En cas de modification de cette réponse, vos modifications seront probablement rejetées par les modérateurs de la communauté.
="INSERT INTO table_name(`"&$A$1&"`,`"&$B$1&"`,`"&$C$1&"`, `"&$D$1&"`) VALUES('"&SUBSTITUTE(A2,"'","\'")&"','"&SUBSTITUTE(B2,"'","\'")&"','"&SUBSTITUTE(C2,"'","\'")&"', "&D2&");"
C'est mieux que la réponse de Hart CO car elle prend en compte les noms de colonne et élimine les erreurs de compilation dues aux guillemets dans la colonne. La dernière colonne est un exemple de colonne de valeur numérique, sans guillemets.
MS SQL, vous pouvez utiliser l'assistant d'importation de SSMS pour importer un fichier Excel.
Hart CO
1
Pour ajouter des détails à @HartCO - Pour accéder à l'assistant d'importation SSMS, cliquez avec le bouton droit de la souris sur la base de données, survolez les tâches, cliquez sur "Importer des données ..." en bas du menu contextuel. Suivez les étapes de l'assistant.
qxotk
2
Vous pouvez utiliser VB pour écrire quelque chose qui sortira dans un fichier ligne par ligne en ajoutant les instructions sql appropriées autour de vos données. Je l'ai fait avant.
Il peut prendre des valeurs séparées par des tabulations et générer un script INSERT. Copiez et collez simplement et dans les options de l' étape 2, cochez la case "La première ligne correspond aux noms de colonnes"
Ensuite , faites défiler vers le bas et à l'étape 3, entrez le nom de votre table dans la case "Schema.Table or View Name:"
Faites également attention aux cases à cocher de suppression et de création de table, et assurez-vous d'examiner le script généré avant de l'exécuter.
C'est le moyen le plus rapide et le plus fiable que j'ai trouvé.
Cette requête que j'ai générée pour insérer les données du fichier Excel dans la base de données Dans cet identifiant et le prix sont également des valeurs numériques et un champ de date. Cette requête résumait tout le type dont j'ai besoin Elle peut également vous être utile
="insert into product (product_id,name,date,price) values("&A1&",'"&B1&"','"&C1&"',"&D1&");"
Id Name Date price
7 Product 72017-01-0515:28:372008 Product 82017-01-0515:28:37409 Product 92017-01-0515:32:3150010 Product 102017-01-0515:32:313011 Product 112017-01-0515:32:319912 Product 122017-01-0515:32:3125
Vous pouvez utiliser la méthode C # ci-dessous pour générer les scripts d'insertion à l'aide de la feuille Excel, il vous suffit d'importer le package OfficeOpenXml à partir du gestionnaire de package NuGet avant d'exécuter la méthode.
public string GenerateSQLInsertScripts(){
var outputQuery = new StringBuilder();
var tableName ="Your Table Name";if(file!=null){
var filePath =@"D:\FileName.xsls";using(OfficeOpenXml.ExcelPackage xlPackage = new OfficeOpenXml.ExcelPackage(new FileInfo(filePath))){
var myWorksheet = xlPackage.Workbook.Worksheets.First();//select the first sheet here
var totalRows = myWorksheet.Dimension.End.Row;
var totalColumns = myWorksheet.Dimension.End.Column;
var columns = new StringBuilder();//this is your columns
var columnRows = myWorksheet.Cells[1,1,1, totalColumns].Select(c => c.Value ==null? string.Empty : c.Value.ToString());
columns.Append("INSERT INTO["+ tableName +"] (");
foreach (var colrow in columnRows){
columns.Append("[");
columns.Append(colrow);
columns.Append("]");
columns.Append(",");}
columns.Length--;
columns.Append(") VALUES (");for(int rowNum =2; rowNum <= totalRows; rowNum++)//selet starting row here
{
var dataRows = myWorksheet.Cells[rowNum,1, rowNum, totalColumns].Select(c => c.Value ==null? string.Empty : c.Value.ToString());
var finalQuery = new StringBuilder();
finalQuery.Append(columns);
foreach (var dataRow in dataRows){
finalQuery.Append("'");
finalQuery.Append(dataRow);
finalQuery.Append("'");
finalQuery.Append(",");}
finalQuery.Length--;
finalQuery.Append(");");
outputQuery.Append(finalQuery);}}}return outputQuery.ToString();}
Je devais souvent créer des scripts SQL et les ajouter au contrôle de code source et les envoyer à DBA. J'ai utilisé cette application ExcelIntoSQL du magasin Windows https://www.microsoft.com/store/apps/9NH0W51XXQRM
Il crée un script complet avec "CREATE TABLE" et INSERTS.
J'ai un moyen fiable de générer des insertions SQL par lots, et vous pouvez modifier des paramètres partiels dans le traitement.Cela m'aide beaucoup dans mon travail, par exemple, copier une centaine de données dans une base de données avec une structure incompatible et le nombre de champs.
IntellIJ DataGrip , l'outil puissant que j'utilise. DG peut recevoir des données de WPS Office ou MS Excel par colonne ou ligne. après la copie, DG peut exporter des données sous forme d'insertions SQL .
insert
etupdate
ici ☺Réponses:
Je pense que l'importation à l'aide de l'une des méthodes mentionnées est idéale s'il s'agit vraiment d'un fichier volumineux, mais vous pouvez utiliser Excel pour créer des instructions d'insertion:
Dans MS SQL, vous pouvez utiliser:
Ne pas afficher tous les commentaires «1 ligne affectée». Et si vous faites beaucoup de lignes et qu'il y a des erreurs, mettez un GO entre les instructions de temps en temps
la source
=CONCATENATE()
mais utiliser le&
signe conduit à une bien meilleure lisibilité!&
lorsque je suis tombé sur la limite de paramètres il y aCONCATENATE()
quelque temps, ce n'est pas un problème courant maintenant que la limite est de 255 paramètres, mais je ne pense jamais à revenir en arrière.Il existe un outil pratique qui permet de gagner beaucoup de temps
http://tools.perceptus.ca/text-wiz.php?ops=7
Il vous suffit de renseigner le nom de la table, les noms des champs et les données - séparés par des tabulations et appuyez sur Go!
la source
Vous pouvez créer une table appropriée via l'interface du studio de gestion et insérer des données dans la table comme indiqué ci-dessous. Cela peut prendre un certain temps en fonction de la quantité de données, mais c'est très pratique.
la source
Vous pouvez utiliser l'instruction Excel suivante:
C'est mieux que la réponse de Hart CO car elle prend en compte les noms de colonne et élimine les erreurs de compilation dues aux guillemets dans la colonne. La dernière colonne est un exemple de colonne de valeur numérique, sans guillemets.
la source
Selon la base de données, vous pouvez exporter au format CSV, puis utiliser une méthode d'importation.
MySQL - http://dev.mysql.com/doc/refman/5.1/en/load-data.html
PostgreSQL - http://www.postgresql.org/docs/8.2/static/sql-copy.html
la source
Vous pouvez utiliser VB pour écrire quelque chose qui sortira dans un fichier ligne par ligne en ajoutant les instructions sql appropriées autour de vos données. Je l'ai fait avant.
la source
Voici un autre outil qui fonctionne très bien ...
http://www.convertcsv.com/csv-to-sql.htm
Il peut prendre des valeurs séparées par des tabulations et générer un script INSERT. Copiez et collez simplement et dans les options de l' étape 2, cochez la case "La première ligne correspond aux noms de colonnes"
Ensuite , faites défiler vers le bas et à l'étape 3, entrez le nom de votre table dans la case "Schema.Table or View Name:"
Faites également attention aux cases à cocher de suppression et de création de table, et assurez-vous d'examiner le script généré avant de l'exécuter.
C'est le moyen le plus rapide et le plus fiable que j'ai trouvé.
la source
Utilisez le
ConvertFrom-ExcelToSQLInsert
depuis ImportExcel dans la galerie PowerShellla source
Voici un lien vers un automate en ligne pour convertir des fichiers CSV en instructions SQL Insert Into:
CSV vers SQL
la source
Cette requête que j'ai générée pour insérer les données du fichier Excel dans la base de données Dans cet identifiant et le prix sont également des valeurs numériques et un champ de date. Cette requête résumait tout le type dont j'ai besoin Elle peut également vous être utile
la source
Vous pouvez utiliser la méthode C # ci-dessous pour générer les scripts d'insertion à l'aide de la feuille Excel, il vous suffit d'importer le package OfficeOpenXml à partir du gestionnaire de package NuGet avant d'exécuter la méthode.
la source
Je devais souvent créer des scripts SQL et les ajouter au contrôle de code source et les envoyer à DBA. J'ai utilisé cette application ExcelIntoSQL du magasin Windows https://www.microsoft.com/store/apps/9NH0W51XXQRM Il crée un script complet avec "CREATE TABLE" et INSERTS.
la source
J'ai un moyen fiable de générer des insertions SQL par lots, et vous pouvez modifier des paramètres partiels dans le traitement.Cela m'aide beaucoup dans mon travail, par exemple, copier une centaine de données dans une base de données avec une structure incompatible et le nombre de champs. IntellIJ DataGrip , l'outil puissant que j'utilise. DG peut recevoir des données de WPS Office ou MS Excel par colonne ou ligne. après la copie, DG peut exporter des données sous forme d'insertions SQL .
la source