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
Ich habe verwendet, =CONCATENATE()aber die Verwendung des &Schilds führt zu einer viel besseren Lesbarkeit!
Mastazi
1
@mastazi Einverstanden! Ich bin zu gewechselt, &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.
Hart CO
1
CONCATENATE () ist der richtige Weg. Klicken Sie einfach auf das FX-Symbol in der Formelleiste, um zu sehen, was Sie eingegeben haben. Es ist viel sauberer als nur verwenden & unterschreiben. Natürlich ist es cool, & sign zu verwenden, aber manchmal, wenn Sie doppelte oder einfache Anführungszeichen haben, werden Sie für immer zählen, was fehlt.
ian0411
1
Funktioniert nicht, wenn Anführungszeichen in Zellen stehen. Überprüfen Sie meine Antwort auf eine korrigierte Version.
Simon Baars
2
@PreshanPradeepa Sie können dieselbe Syntax verwenden. SQL Server ist es egal, ob die Ganzzahl in Anführungszeichen steht, solange es sich um eine gültige Ganzzahl handelt.
Veröffentlichen Sie Ihre sensiblen Daten nicht im Internet. Sie können nicht wissen, was mit den Daten geschieht, die Sie an die Webanwendung senden. Einige dieser Tools speichern Ihre Daten und machen sie öffentlich verfügbar
GabiM
28
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.
Praktisch. Ich sehe, dass bei einer IDENTITY-Spalte der Kopierpuffer die Spalte haben muss, obwohl die darin enthaltenen Daten ignoriert werden, wenn die Werte beim Einfügen der Zeilen automatisch generiert werden.
Fortboise
Sie können Ihre IDENTITY-Spalte zur letzten in der Spaltenliste machen, und dann wäre es überhaupt nicht erforderlich, eine zusätzliche Spalte zu haben.
Andrey Morozov
1
wenn Sie die IDENTITY-Werte nicht in der Excel-Tabelle angeben; Sie können das SQL-Skript für die Bearbeitung der obersten 200 Zeilen ändern und erneut ausführen, indem Sie die Spalte IDENTITY entfernen. Wenn Sie also die Werte ohne IDENTITÄT kopieren und einfügen; Diese Methode wird funktionieren.
Aozan88
Dies ist für Datums- und Zeitfelder in Excel für alle anderen Personen, die auf das Problem stoßen, fehlerhaft. Die datetime-Daten werden aus irgendeinem Grund auf der SQL-Seite in "binäre" Daten konvertiert.
Kevin Vasko
1
@condiosluzverde Ich würde Ihnen raten, Ihre eigene Antwort zu posten. Wenn Sie diese Antwort bearbeiten, werden Ihre Änderungen wahrscheinlich von Community-Moderatoren abgelehnt.
Andrey Morozov
15
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.
In MS SQL können Sie den Importassistenten von SSMS verwenden, um eine Excel-Datei zu importieren.
Hart CO
1
So fügen Sie Details zu @HartCO hinzu: Um zum SSMS-Importassistenten zu navigieren, klicken Sie mit der rechten Maustaste auf die Datenbank, bewegen Sie den Mauszeiger über die Aufgaben und klicken Sie unten im Kontextmenü auf "Daten importieren ...". Befolgen Sie die Schritte im Assistenten.
Qxotk
2
Sie können VB verwenden, um etwas zu schreiben, das zeilenweise in eine Datei ausgegeben wird, indem Sie die entsprechenden SQL-Anweisungen um Ihre Daten hinzufügen. Ich habe das schon mal gemacht.
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.
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 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
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 ☺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:
In MS SQL können Sie Folgendes verwenden:
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
quelle
=CONCATENATE()
aber die Verwendung des&
Schilds führt zu einer viel besseren Lesbarkeit!&
als ich vor einiger Zeit auf das Parameterlimit gestoßen bin. DasCONCATENATE()
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!"
quelle
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.
quelle
Sie können die folgende Excel-Anweisung verwenden:
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.
quelle
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
quelle
Sie können VB verwenden, um etwas zu schreiben, das zeilenweise in eine Datei ausgegeben wird, indem Sie die entsprechenden SQL-Anweisungen um Ihre Daten hinzufügen. Ich habe das schon mal gemacht.
quelle
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.
quelle
Verwenden Sie das
ConvertFrom-ExcelToSQLInsert
aus dem ImportExcel in der PowerShell-Galeriequelle
Hier ist ein Link zu einem Online-Automator zum Konvertieren von CSV-Dateien in SQL Insert Into-Anweisungen:
CSV-zu-SQL
quelle
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
quelle
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.
quelle
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.
quelle
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 .
quelle