Veritabanıma eklemek istediğim büyük bir excel çalışma sayfam var.
Bu excel çalışma sayfasından bir SQL ekleme komut dosyası oluşturabilir miyim?
Veritabanıma eklemek istediğim büyük bir excel çalışma sayfam var.
Bu excel çalışma sayfasından bir SQL ekleme komut dosyası oluşturabilir miyim?
Yanıtlar:
Bahsedilen yöntemlerden birini kullanarak içe aktarmanın gerçekten büyük bir dosyaysa ideal olduğunu düşünüyorum, ancak ekleme ifadeleri oluşturmak için Excel'i kullanabilirsiniz:
="INSERT INTO table_name VALUES('"&A1&"','"&B1&"','"&C1&"')"
MS SQL'de şunları kullanabilirsiniz:
SET NOCOUNT ON
Tüm 'etkilenen 1 satır' yorumları göstermekten vazgeçmek. Ve çok sayıda satır yapıyorsanız ve bu hatalar çıkıyorsa, arada bir ifadeler arasına bir GO koyun
=CONCATENATE()
ama &
işareti kullanmak çok daha iyi okunabilirlik sağlıyor!
&
parametre sınırına geldiğimde geçiş yaptım CONCATENATE()
, bu artık yaygın bir sorun değil, sınır 255 parametre olduğundan, ancak geri dönmeyi asla düşünmüyorum.
Çok fazla zaman kazandıran kullanışlı bir araç var.
http://tools.perceptus.ca/text-wiz.php?ops=7
Sadece tablo adını, alan adlarını ve verileri - sekmeyle ayrılmış olarak beslemeniz ve Git!
Yönetim stüdyosu arayüzü üzerinden uygun bir tablo oluşturabilir ve aşağıda gösterildiği gibi tabloya veri ekleyebilirsiniz. Veri miktarına bağlı olarak biraz zaman alabilir, ancak çok kullanışlıdır.
Aşağıdaki excel ifadesini kullanabilirsiniz:
="INSERT INTO table_name(`"&$A$1&"`,`"&$B$1&"`,`"&$C$1&"`, `"&$D$1&"`) VALUES('"&SUBSTITUTE(A2, "'", "\'")&"','"&SUBSTITUTE(B2, "'", "\'")&"','"&SUBSTITUTE(C2, "'", "\'")&"', "&D2&");"
Bu, sütun adlarını dikkate aldığından ve sütundaki alıntılardan kaynaklanan derleme hatalarını ortadan kaldırdığından Hart CO'nun yanıtını geliştirir. Son sütun, tırnak işaretleri olmadan sayısal değer sütunu örneğidir.
Veritabanına bağlı olarak, CSV'ye aktarabilir ve ardından bir içe aktarma yöntemi kullanabilirsiniz.
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
İşte çok iyi çalışan başka bir araç ...
http://www.convertcsv.com/csv-to-sql.htm
Sekmeyle ayrılmış değerler alabilir ve bir INSERT betiği oluşturabilir. Sadece kopyalayıp yapıştırın ve 2. adımın altındaki seçeneklerde "İlk satır sütun adlarıdır" kutusunu işaretleyin
Ardından aşağı kaydırın ve 3. adımın altında, "Şema Tablo veya Görünüm Adı:" kutusuna tablo adınızı girin.
Tabloyu sil ve oluştur onay kutularına da dikkat edin ve çalıştırmadan önce oluşturulan komut dosyasını incelediğinizden emin olun.
Bu bulduğum en hızlı ve en güvenilir yol.
Kullanım ConvertFrom-ExcelToSQLInsert
gelen ImportExcel PowerShell Galerisi'nde
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
CSV dosyalarını SQL Insert Into deyimlerine dönüştürmek için bir Çevrimiçi otomatikleştiriciye bir bağlantı:
Excel dosyası verilerini veritabanına eklemek için oluşturduğum bu sorgu Bu kimlik ve fiyatta sayısal değerler ve tarih alanı da var. Bu sorgu, ihtiyacım olan tüm türleri özetledi Sizin için de yararlı olabilir
="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
Excel sayfasını kullanarak ekleme betikleri oluşturmak için aşağıdaki C # Yöntemini kullanabilirsiniz, yalnızca yöntemi çalıştırmadan önce NuGet Paket Yöneticisi'nden OfficeOpenXml Paketini içe aktarmanız gerekir.
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();}
Sık sık SQL betikleri oluşturmam ve bunları kaynak kontrolüne eklemem ve DBA'ya göndermem gerekiyordu. Bu ExcelIntoSQL Uygulamasını windows store https://www.microsoft.com/store/apps/9NH0W51XXQRM'den kullandım. "CREATE TABLE" ve INSERTS ile tam komut dosyası oluşturur.
SQL eklemeleri oluşturmak için güvenilir bir yolum var ve işlem sırasında kısmi parametreleri değiştirebilirsiniz.İşimde bana çok yardımcı oluyor, örneğin, yüzlerce veriyi uyumsuz yapı ve alan sayısı ile veritabanına kopyalamak gibi. IntellIJ DataGrip , kullandığım güçlü araç. DG, WPS ofisinden veya MS Excel'den sütun veya satır bazında veri alabilir. Kopyalamadan sonra, DG verileri SQL eklemeleri olarak dışa aktarabilir .
insert
&update
tam burada hem de sql betikleri almak için basit bir araç