it-swarm.com.de

SQL-Einfügeskript aus Excel-Arbeitsblatt 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ügungsskript generieren?

78
user2323240

Ich denke, der Import mit einer der genannten Methoden ist ideal, wenn es sich wirklich um eine große Datei handelt. Sie können jedoch Excel zum Erstellen von Einfügeanweisungen verwenden:

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

In MS SQL können Sie verwenden:

SET NOCOUNT ON

Um darauf zu verzichten, alle '1 betroffenen Zeilen' Kommentare anzuzeigen. Und wenn Sie viele Zeilen ausführen und Fehler auftreten, setzen Sie ab und zu ein GO zwischen Anweisungen

167
Hart CO

Sie können eine geeignete Tabelle über die Management Studio-Schnittstelle erstellen und Daten wie unten gezeigt in die Tabelle einfügen. Je nach Datenmenge kann dies einige Zeit in Anspruch nehmen, aber es ist sehr praktisch.

enter image description here

enter image description here

27
Andrey Morozov

Es gibt ein praktisches Tool, mit dem Sie viel Zeit sparen können 

http://tools.perceptus.ca/text-wiz.php?ops=7

Sie müssen nur den Tabellennamen, die Feldnamen und die Registerkarte "Daten" eingeben, und klicken Sie auf "Los".

24
mhn

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 hier Spaltennamen berücksichtigt und Kompilierungsfehler aufgrund von Anführungszeichen in der Spalte beseitigt werden. Die letzte Spalte ist ein Beispiel für eine Spalte mit numerischen Werten ohne Anführungszeichen.

7
Simon Baars

Je nach Datenbank können Sie in CSV exportieren und dann eine Importmethode verwenden.

MySQL - http://dev.mysql.com/doc/refman/5.1/de/load-data.html

PostgreSQL - http://www.postgresql.org/docs/8.2/static/sql-copy.html

4
jmhobbs

Sie können VB verwenden, um etwas zu schreiben, das Zeile für Zeile in eine Datei ausgegeben wird, und fügen Sie die entsprechenden SQL-Anweisungen um Ihre Daten hinzu. Ich habe das schon mal gemacht.

2
Josh

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 unter Schritt 3, geben Sie Ihren Tabellennamen in das Feld "Schema.Tabelle oder Ansichtsname:" ein.

Achten Sie auch auf die Kontrollkästchen zum Löschen und Erstellen von Tabellen, und stellen Sie sicher, dass Sie das generierte Skript überprüfen, bevor Sie es ausführen.

Dies ist der schnellste und zuverlässigste Weg, den ich gefunden habe.

1
Steven Mays

Es gibt Tools, die Dateien online konvertieren. Achten Sie jedoch darauf, welche Sie verwenden - einige veröffentlichen konvertierte Dateien im Web.

SQLizer.io ist ein SQL-Tool, das Ihre Daten weder speichert noch irgendwo im Web veröffentlicht.

Hier ist ein Link zu einem Online-Automator zum Konvertieren von CSV-Dateien in SQL Insert Ino-Anweisungen:

CSV-zu-SQL

0
David Whittaker

Sie können die unten stehende C # -Methode verwenden, um die Einfügescripts mithilfe von Excel-Arbeitsblättern zu generieren. Sie müssen 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();}
0
Bhargav Konda

Verwenden Sie den 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
0
SteveC

Ich habe eine zuverlässige Möglichkeit, SQL-Einfügungen zweifach zu generieren, und Sie können Teilparameter in der Verarbeitung ändern. Dies hilft mir bei meiner Arbeit sehr, z. B. das Kopieren von einhundert Daten in eine Datenbank mit inkompatibler Struktur und Feldanzahl. IntellIJ DataGrip , das mächtige Werkzeug, das ich benutze. DG kann Daten von WPS Office oder MS Excel nach Spalte oder Zeile doppelt empfangen. Nach dem Kopieren kann DG ​​Daten als SQL-Einfügungen exportieren .

0
何德福

Diese Abfrage habe ich für das Einfügen der Excel-Dateidaten in die Datenbank generiert. Diese ID und der Preis sind numerische Werte und ein Datumsfeld. Diese Abfrage fasste alle Arten zusammen, die ich benötige. Es 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
0

Ich musste häufig SQL-Skripts erstellen und sie zur Quellcodeverwaltung hinzufügen und an DBA senden. __ Ich verwendete diese ExcelIntoSQL-App von Windows Store https://www.Microsoft.com/store/apps/9NH0W51XXQRM Er erstellt ein komplettes Skript mit "CREATE TABLE" und INSERTS.