Mam duży arkusz programu Excel, który chcę dodać do mojej bazy danych.
Czy mogę wygenerować skrypt wstawiania SQL z tego arkusza programu Excel?
Mam duży arkusz programu Excel, który chcę dodać do mojej bazy danych.
Czy mogę wygenerować skrypt wstawiania SQL z tego arkusza programu Excel?
Odpowiedzi:
Myślę, że importowanie przy użyciu jednej z wymienionych metod jest idealne, jeśli naprawdę jest to duży plik, ale możesz użyć programu Excel do tworzenia instrukcji wstawiania:
="INSERT INTO table_name VALUES('"&A1&"','"&B1&"','"&C1&"')"
W MS SQL możesz użyć:
SET NOCOUNT ON
Zrezygnować z wyświetlania wszystkich komentarzy z „1 wierszem, na które ma to wpływ” A jeśli robisz wiele wierszy i pojawia się błąd, od czasu do czasu wstaw GO między instrukcjami
=CONCATENATE()
ale używanie &
znaku prowadzi do znacznie lepszej czytelności!
&
gdy wpadłem na limit parametrów CONCATENATE()
jakiś czas temu, to nie jest powszechny problem teraz, gdy limit wynosi 255 parametrów, ale nigdy nie myślę o przywróceniu.
Jest poręczne narzędzie, które oszczędza dużo czasu w
http://tools.perceptus.ca/text-wiz.php?ops=7
Wystarczy podać nazwę tabeli, nazwy pól i dane - oddzielone tabulatorami i nacisnąć Go!
Możesz utworzyć odpowiednią tabelę za pośrednictwem interfejsu studia zarządzania i wstawić dane do tabeli, tak jak pokazano poniżej. Może to zająć trochę czasu w zależności od ilości danych, ale jest bardzo przydatne.
Możesz użyć następującej instrukcji programu Excel:
="INSERT INTO table_name(`"&$A$1&"`,`"&$B$1&"`,`"&$C$1&"`, `"&$D$1&"`) VALUES('"&SUBSTITUTE(A2, "'", "\'")&"','"&SUBSTITUTE(B2, "'", "\'")&"','"&SUBSTITUTE(C2, "'", "\'")&"', "&D2&");"
Poprawia to odpowiedź Harta CO, ponieważ bierze pod uwagę nazwy kolumn i usuwa błędy kompilacji spowodowane cudzysłowami w kolumnie. Ostatnia kolumna jest przykładem kolumny z wartościami liczbowymi, bez cudzysłowów.
W zależności od bazy danych możesz wyeksportować do CSV, a następnie skorzystać z metody importu.
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
Oto kolejne narzędzie, które działa bardzo dobrze ...
http://www.convertcsv.com/csv-to-sql.htm
Może przyjmować wartości rozdzielone tabulatorami i generować skrypt INSERT. Po prostu skopiuj i wklej i w opcjach pod krokiem 2 zaznacz pole „Pierwszy wiersz to nazwy kolumn”
Następnie przewiń w dół i w kroku 3 wprowadź nazwę tabeli w polu „Schemat.Tabela lub nazwa widoku:”
Zwróć także uwagę na pola wyboru usuń i utwórz tabelę, i upewnij się, że sprawdziłeś wygenerowany skrypt przed jego uruchomieniem.
To najszybszy i najbardziej niezawodny sposób, jaki znalazłem.
Użyj ConvertFrom-ExcelToSQLInsert
z ImportExcel w galerii programu PowerShell
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
Oto link do automatu online do konwersji plików CSV do instrukcji SQL Insert Into:
To zapytanie, które wygenerowałem, aby wstawić dane pliku Excel do bazy danych. W tym identyfikatorze i cenie są również wartości liczbowe i pole daty. To zapytanie podsumowało wszystkie typy, których potrzebuję. Może być przydatne również dla Ciebie
="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
Możesz użyć poniższej metody C #, aby wygenerować skrypty wstawiania za pomocą arkusza programu Excel, wystarczy zaimportować pakiet OfficeOpenXml z Menedżera pakietów NuGet przed wykonaniem metody.
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();}
Musiałem często tworzyć skrypty SQL, dodawać je do kontroli źródła i wysyłać do DBA. Użyłem tej aplikacji ExcelIntoSQL ze sklepu Windows https://www.microsoft.com/store/apps/9NH0W51XXQRM Tworzy kompletny skrypt z "CREATE TABLE" i INSERTS.
Mam niezawodny sposób na bezproblemowe generowanie wstawek SQL, a przy przetwarzaniu można modyfikować częściowe parametry, co bardzo mi pomaga w pracy np. Kopiowanie setek danych do bazy danych o niekompatybilnej strukturze i liczbie pól. IntellIJ DataGrip , potężne narzędzie, którego używam. DG może bez problemu otrzymywać dane z biura WPS lub MS Excel według kolumny lub wiersza. po skopiowaniu DG może eksportować dane jako wstawki SQL .
insert
iupdate
tutaj ☺