Ho un foglio di lavoro Excel di grandi dimensioni che voglio aggiungere al mio database.
Posso generare uno script di inserimento SQL da questo foglio di lavoro Excel?
Ho un foglio di lavoro Excel di grandi dimensioni che voglio aggiungere al mio database.
Posso generare uno script di inserimento SQL da questo foglio di lavoro Excel?
Risposte:
Penso che l'importazione utilizzando uno dei metodi menzionati sia l'ideale se si tratta veramente di 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 interessata". E se stai facendo molte righe e si verificano errori, metti un GO tra le istruzioni ogni tanto
=CONCATENATE()
ma usando il &
segno porta a una leggibilità molto migliore!
&
quando mi sono imbattuto nel limite dei parametri CONCATENATE()
qualche tempo fa, questo non è un problema comune ora che il limite è di 255 parametri, ma non penso mai di tornare indietro.
C'è uno strumento utile che fa risparmiare molto tempo a
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!
È possibile creare una tabella appropriata tramite l'interfaccia di Management Studio e inserire i dati nella tabella come mostrato di seguito. Potrebbe volerci un po 'di tempo a seconda della quantità di dati, ma è molto utile.
Puoi 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 è meglio della risposta di Hart CO in quanto tiene conto dei nomi delle colonne e elimina gli errori di compilazione dovuti alle virgolette nella colonna. L'ultima colonna è un esempio di una colonna di valori numerici, senza virgolette.
A seconda del database, puoi 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
Ecco un altro strumento che funziona molto bene ...
http://www.convertcsv.com/csv-to-sql.htm
Può accettare valori separati da tabulazione e generare uno script INSERT. Basta copiare e incollare e nelle opzioni passaggio 2 selezionare la casella "La prima riga è nomi di colonne"
Quindi scorri verso il basso e sotto il passaggio 3, inserisci il nome della tabella nella casella "Schema.Table or View Name:"
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.
Usa il ConvertFrom-ExcelToSQLInsert
da ImportExcel nella PowerShell Gallery
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
Ecco un collegamento a un automator online per convertire i file CSV in istruzioni SQL Insert Into:
Questa query che ho generato per inserire i dati del file Excel nel database In questo id e prezzo sono valori numerici e anche il campo della data. Questa query ha riassunto tutto il tipo di cui ho bisogno. Potrebbe anche essere 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
È possibile utilizzare il seguente metodo C # per generare gli script di inserimento utilizzando il foglio Excel, è sufficiente importare il pacchetto OfficeOpenXml da NuGet Package Manager 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 spesso script SQL 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 script completo con "CREATE TABLE" e INSERTS.
Ho un modo affidabile per generare inserimenti SQL in modo efficace e puoi modificare parametri parziali durante l'elaborazione.Mi aiuta molto nel mio lavoro, ad esempio, copiare centinaia di dati su database con struttura e conteggio campi incompatibili. IntellIJ DataGrip , il potente strumento che utilizzo. DG può ricevere facilmente i dati dall'ufficio WPS o da MS Excel per colonna o riga. dopo la copia, DG può esportare i dati come inserti SQL .
insert
eupdate
proprio qui ☺