Ich habe ein großes Excel-Arbeitsblatt, das ich meiner Datenbank hinzufügen möchte.
Kann ich aus diesem Excel-Arbeitsblatt ein SQL-Einfügeskript generieren?
Ich habe ein großes Excel-Arbeitsblatt, das ich meiner Datenbank hinzufügen möchte.
Kann ich aus diesem Excel-Arbeitsblatt ein SQL-Einfügeskript generieren?
Antworten:
Ich denke, das Importieren mit einer der genannten Methoden ist ideal, wenn es sich wirklich um eine große Datei handelt, aber Sie können Excel verwenden, um Einfügeanweisungen zu erstellen:
="INSERT INTO table_name VALUES('"&A1&"','"&B1&"','"&C1&"')"
In MS SQL können Sie Folgendes verwenden:
SET NOCOUNT ON
Um darauf zu verzichten, alle Kommentare "1 Zeile betroffen" anzuzeigen. Und wenn Sie viele Zeilen ausführen und Fehler auftreten, setzen Sie ab und zu ein GO zwischen Anweisungen
=CONCATENATE()
aber die Verwendung des &
Schilds führt zu einer viel besseren Lesbarkeit!
&
als ich vor einiger Zeit auf das Parameterlimit gestoßen bin. Das CONCATENATE()
ist kein allgemeines Problem, da das Limit jetzt 255 Parameter beträgt, aber ich denke nie daran, es zurückzusetzen.
Es gibt ein praktisches Tool, das viel Zeit spart
http://tools.perceptus.ca/text-wiz.php?ops=7
Sie müssen nur den Tabellennamen, die Feldnamen und die Registerkarte "Daten" getrennt eingeben und auf "Los!"
Sie können eine entsprechende Tabelle über die Management Studio-Oberfläche erstellen und Daten wie unten gezeigt in die Tabelle einfügen. Je nach Datenmenge kann es einige Zeit dauern, aber es ist sehr praktisch.
Sie können die folgende Excel-Anweisung verwenden:
="INSERT INTO table_name(`"&$A$1&"`,`"&$B$1&"`,`"&$C$1&"`, `"&$D$1&"`) VALUES('"&SUBSTITUTE(A2, "'", "\'")&"','"&SUBSTITUTE(B2, "'", "\'")&"','"&SUBSTITUTE(C2, "'", "\'")&"', "&D2&");"
Dies ist besser als die Antwort von Hart CO, da Spaltennamen berücksichtigt werden und Kompilierungsfehler aufgrund von Anführungszeichen in der Spalte beseitigt werden. Die letzte Spalte ist ein Beispiel für eine numerische Wertespalte ohne Anführungszeichen.
Abhängig von der Datenbank können Sie in CSV exportieren und dann eine Importmethode verwenden.
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
Hier ist ein weiteres Tool, das sehr gut funktioniert ...
http://www.convertcsv.com/csv-to-sql.htm
Es kann tabulatorgetrennte Werte annehmen und ein INSERT-Skript generieren. Einfach kopieren und einfügen und in den Optionen unter Schritt 2 das Kontrollkästchen "Erste Zeile sind Spaltennamen" aktivieren.
Scrollen Sie dann nach unten und geben Sie unter Schritt 3 Ihren Tabellennamen in das Feld "Schema.Tabelle oder Ansichtsname:" ein.
Beachten Sie auch die Kontrollkästchen zum Löschen und Erstellen von Tabellen und überprüfen Sie das generierte Skript, bevor Sie es ausführen.
Dies ist der schnellste und zuverlässigste Weg, den ich gefunden habe.
Verwenden Sie das ConvertFrom-ExcelToSQLInsert
aus dem ImportExcel in der PowerShell-Galerie
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
Hier ist ein Link zu einem Online-Automator zum Konvertieren von CSV-Dateien in SQL Insert Into-Anweisungen:
Diese Abfrage habe ich zum Einfügen der Excel-Dateidaten in die Datenbank generiert. In dieser ID und diesem Preis sind auch numerische Werte und Datumsfelder enthalten. Diese Abfrage hat alle Arten zusammengefasst, die ich benötige. Sie kann auch für Sie nützlich sein
="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
Sie können die folgende C # -Methode verwenden, um die Einfügeskripte mithilfe einer Excel-Tabelle zu generieren. Sie müssen lediglich das OfficeOpenXml-Paket aus NuGet Package Manager importieren, bevor Sie die Methode ausführen.
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();}
Ich musste oft SQL-Skripte erstellen und sie zur Quellcodeverwaltung hinzufügen und an den DBA senden. Ich habe diese ExcelIntoSQL-App aus dem Windows Store https://www.microsoft.com/store/apps/9NH0W51XXQRM verwendet. Sie erstellt ein vollständiges Skript mit "CREATE TABLE" und INSERTS.
Ich habe eine zuverlässige Möglichkeit, SQL-Einfügungen schnell zu generieren, und Sie können Teilparameter bei der Verarbeitung ändern. Dies hilft mir bei meiner Arbeit sehr, z. B. das Kopieren von hundert Daten in eine Datenbank mit inkompatibler Struktur und Feldanzahl. IntellIJ DataGrip , das leistungsstarke Tool, das ich verwende. DG kann Daten von WPS Office oder MS Excel nach Spalten oder Zeilen empfangen. Nach dem Kopieren kann DG Daten als SQL-Einfügungen exportieren .
insert
undupdate
hier ☺