Genera script di inserimento SQL dal foglio di lavoro Excel

Ho un grande foglio di lavoro Excel che voglio aggiungere al mio database.

Posso generare uno script di inserimento SQL da questo foglio di lavoro Excel?

Penso che l’importazione usando uno dei metodi menzionati sia l’ideale se è veramente un file di grandi dimensioni, ma puoi usare Excel per creare istruzioni di inserimento:

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

In MS SQL puoi usare:

 SET NOCOUNT ON 

Per rinunciare a mostrare tutti i commenti ‘1 riga interessati’. E se stai facendo un sacco di righe e si sbaglia, metti un GO tra le dichiarazioni ogni tanto

È ansible creare una tabella appropriata tramite l’interfaccia di Management Studio e inserire i dati nella tabella come mostrato di seguito. Potrebbe richiedere del tempo a seconda della quantità di dati, ma è molto utile.

inserisci la descrizione dell'immagine qui

inserisci la descrizione dell'immagine qui

C’è uno strumento utile che consente di risparmiare molto tempo

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

Devi solo inserire il nome della tabella, i nomi dei campi e i dati – tab separati e premere Vai!

È ansible utilizzare la seguente dichiarazione excel:

 ="INSERT INTO table_name(`"&$A$1&"`,`"&$B$1&"`,`"&$C$1&"`, `"&$D$1&"`) VALUES('"&SUBSTITUTE(A2, "'", "\'")&"','"&SUBSTITUTE(B2, "'", "\'")&"','"&SUBSTITUTE(C2, "'", "\'")&"', "&D2&");" 

Questo è migliore della risposta di Hart CO in quanto tiene conto dei nomi delle colonne e si libera degli errori di compilazione dovuti alle virgolette nella colonna. La colonna finale è un esempio di una colonna di valori numerici, senza virgolette.

A seconda del database, è ansible esportare in CSV e quindi utilizzare un metodo di importazione.

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

È ansible utilizzare VB per scrivere qualcosa che verrà emesso in un file riga per riga aggiungendo le appropriate istruzioni SQL attorno ai dati. L’ho già fatto prima.

Ecco un altro strumento che funziona molto bene …

http://www.convertcsv.com/csv-to-sql.htm

Può prendere valori separati da tabulazione e generare uno script INSERT. Basta copiare e incollare e nelle opzioni sotto il passaggio 2 seleziona la casella “La prima riga è i nomi delle colonne”

Quindi scorrere verso il basso e al punto 3, immettere il nome della tabella nella casella “Schema.Table o Visualizza nome:”

Presta attenzione anche alle caselle di controllo Elimina e Crea tabella, e assicurati di esaminare lo script generato prima di eseguirlo.

Questo è il modo più veloce e affidabile che ho trovato.

Ecco un link a un automatore online per convertire i file CSV in istruzioni SQL Insert Into:

CSV-to-SQL

Questa query che ho generato per l’inserimento dei dati del file Excel nel database In questo ID e il prezzo sono anche valori numerici e campo della data. Questa query riassume tutto il tipo che richiedo Potrebbe essere utile anche a te

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

Esistono strumenti che convertono i file online ma fai attenzione a quali usi: alcuni pubblicheranno i file convertiti sul web.

SQLizer.io è uno strumento SQL che non memorizza i dati o li pubblica ovunque sul Web.

Utilizzare ConvertFrom-ExcelToSQLInsert da ImportExcel nella Galleria PowerShell

 NAME ConvertFrom-ExcelToSQLInsert SYNTAX ConvertFrom-ExcelToSQLInsert [-TableName]  [-Path]  [[-WorkSheetname] ] [[-HeaderRow] ] [[-Header] ] [-NoHeader] [-DataOnly] [] PARAMETERS -DataOnly -Header  -HeaderRow  -NoHeader -Path  -TableName  -WorkSheetname   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 

È ansible utilizzare il seguente metodo C # per generare gli script di inserimento utilizzando il foglio di Excel, basta importare il pacchetto OfficeOpenXml da Gestione pacchetti NuGet prima di eseguire il metodo.

 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();} 

Ho dovuto creare script SQL spesso e aggiungerli al controllo del codice sorgente e inviarli a DBA. Ho usato questa app ExcelIntoSQL da windows store https://www.microsoft.com/store/apps/9NH0W51XXQRM Crea uno script completo con “CREATE TABLE” e INSERTS.