web-dev-qa-db-fra.com

Générer un script d'insertion SQL à partir d'une feuille de calcul Excel

Je souhaite ajouter une grande feuille de calcul Excel à ma base de données.

Puis-je générer un script d'insertion SQL à partir de cette feuille de calcul Excel?

78
user2323240

Je pense que l'importation à l'aide de l'une des méthodes mentionnées est idéale si le fichier est volumineux, mais vous pouvez utiliser Excel pour créer des instructions d'insertion:

="INSERT INTO table_name VALUES('"&A1&"','"&B1&"','"&C1&"')"

En MS SQL, vous pouvez utiliser:

SET NOCOUNT ON

Renoncer à l'affichage de 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 déclarations de temps en temps

167
Hart CO

Vous pouvez créer une table appropriée via l'interface de 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.

enter image description here

enter image description here

27
Andrey Morozov

Il existe un outil pratique qui vous fait 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 de champs et les données - onglet séparés et d'appuyer sur Go!

24
mhn

Vous pouvez utiliser l'instruction Excel suivante:

="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 supprime 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.

7
Simon Baars

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

4
jmhobbs

Vous pouvez utiliser VB pour écrire quelque chose qui sera écrit dans un fichier ligne par ligne en ajoutant les instructions SQL appropriées autour de vos données. Je l'ai fait avant.

2
Josh

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. Il suffit de copier et coller et dans les options à l'étape 2, cochez la case "La première ligne contient les noms de colonne"

Ensuite, faites défiler et à l'étape 3, entrez le nom de votre table dans la case "Schéma.Table ou Nom de la vue:"

Faites également attention aux cases à cocher delete et create 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é.

1
Steven Mays

Il existe des outils qui convertissent des fichiers en ligne, mais faites attention à ceux que vous utilisez - certains publieront des fichiers convertis sur le Web.

SQLizer.io est un outil SQL qui ne stocke pas vos données, ni ne les publie nulle part sur le Web.

0

Voici un lien vers un automate en ligne pour convertir des fichiers CSV en instructions SQL Insert Into:

CSV-to-SQL

0
David Whittaker

Vous pouvez utiliser la méthode C # ci-dessous pour générer les scripts d'insertion à l'aide d'une feuille Excel. Vous devez uniquement importer le package OfficeOpenXml à partir du gestionnaire de packages 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();}
0
Bhargav Konda

Utilisez le ConvertFrom-ExcelToSQLInsert dans ImportExcel dans la galerie PowerShell

NAME
    ConvertFrom-ExcelToSQLInsert
SYNTAX
    ConvertFrom-ExcelToSQLInsert [-TableName] <Object> [-Path] <Object> 
      [[-WorkSheetname] <Object>] [[-HeaderRow] <int>] 
      [[-Header] <string[]>] [-NoHeader] [-DataOnly]  [<CommonParameters>]
PARAMETERS
    -DataOnly
    -Header <string[]>
    -HeaderRow <int>
    -NoHeader
    -Path <Object>
    -TableName <Object>
    -WorkSheetname <Object>
    <CommonParameters>
        This cmdlet supports the common parameters: Verbose, Debug,
        ErrorAction, ErrorVariable, WarningAction, WarningVariable,
        OutBuffer, PipelineVariable, and OutVariable. For more information, see
        about_CommonParameters (http://go.Microsoft.com/fwlink/?LinkID=113216).
ALIASES
    None
REMARKS
    None
0
SteveC

J'ai un moyen fiable de générer des insertions SQL à la volée, et vous pouvez modifier des paramètres partiels lors du traitement. Cela m'aide beaucoup dans mon travail, par exemple, copier des centaines de données dans une base de données avec une structure et un nombre de champs incompatibles. IntellIJ DataGrip , le puissant outil que j'utilise. DG peut recevoir des données de WPS office ou de MS Excel par colonne ou par ligne. Après la copie, , DG peut exporter des données en tant qu'insert SQL .

0
何德福

Cette requête que j'ai générée pour l'insertion des données du fichier Excel dans la base de donnéesDans cet identifiant et ce prix, figurent également des valeurs numériques et un champ de date. Cette requête résume tout le type dont j'ai besoin. Elle peut aussi vous être utile. 

="insert into  product (product_id,name,date,price) values("&A1&",'" &B1& "','" &C1& "'," &D1& ");"


    Id    Name           Date           price 
    7   Product 7   2017-01-05 15:28:37 200
    8   Product 8   2017-01-05 15:28:37 40
    9   Product 9   2017-01-05 15:32:31 500
    10  Product 10  2017-01-05 15:32:31 30
    11  Product 11  2017-01-05 15:32:31 99
    12  Product 12  2017-01-05 15:32:31 25
0
vaibhav kulkarni

Je devais faire souvent des scripts SQL, les ajouter au contrôle de code source et les envoyer à DBA . J'ai utilisé cette application ExcelIntoSQL à partir de Windows Store https://www.Microsoft.com/store/apps/9NH0W51XXQRM Il crée un script complet avec "CREATE TABLE" et INSERTS.