J'ai une grande feuille de calcul Excel que je souhaite ajouter à ma base de données.
Puis-je générer un script d'insertion SQL à partir de cette feuille de calcul Excel?
J'ai une grande feuille de calcul Excel que je souhaite ajouter à ma base de données.
Puis-je générer un script d'insertion SQL à partir de cette feuille de calcul Excel?
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:
="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
=CONCATENATE()
mais utiliser le &
signe conduit à une bien meilleure lisibilité!
&
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.
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!
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.
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 é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.
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
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é.
Utilisez le ConvertFrom-ExcelToSQLInsert
depuis 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
Voici un lien vers un automate en ligne pour convertir des fichiers CSV en instructions SQL Insert Into:
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 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
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 ☺