ฉันมีแผ่นงาน excel ขนาดใหญ่ที่ต้องการเพิ่มลงในฐานข้อมูล
ฉันสามารถสร้างสคริปต์แทรก SQL จากแผ่นงาน excel นี้ได้หรือไม่
ฉันมีแผ่นงาน excel ขนาดใหญ่ที่ต้องการเพิ่มลงในฐานข้อมูล
ฉันสามารถสร้างสคริปต์แทรก SQL จากแผ่นงาน excel นี้ได้หรือไม่
คำตอบ:
ฉันคิดว่าการนำเข้าโดยใช้วิธีใดวิธีหนึ่งที่กล่าวมานั้นเหมาะอย่างยิ่งหากเป็นไฟล์ขนาดใหญ่ แต่คุณสามารถใช้ Excel เพื่อสร้างคำสั่งแทรก:
="INSERT INTO table_name VALUES('"&A1&"','"&B1&"','"&C1&"')"
ใน MS SQL คุณสามารถใช้:
SET NOCOUNT ON
เพื่อแสดงความคิดเห็น '1 แถวที่ได้รับผลกระทบ' ทั้งหมด และถ้าคุณทำหลายแถวและเกิดข้อผิดพลาดให้ใส่ GO ระหว่างคำสั่งทุก ๆ ครั้ง
=CONCATENATE()
แต่การใช้&
เครื่องหมายทำให้อ่านได้ดีขึ้นมาก!
&
เมื่อฉันชนกับขีด จำกัด พารามิเตอร์ในCONCATENATE()
ขณะที่กลับมานั่นไม่ใช่ปัญหาทั่วไปในตอนนี้ที่ขีด จำกัด คือ 255 พารามิเตอร์ แต่ฉันไม่เคยคิดถึงการย้อนกลับ
มีเครื่องมือที่มีประโยชน์ซึ่งช่วยประหยัดเวลาได้มากที่
http://tools.perceptus.ca/text-wiz.php?ops=7
คุณต้องป้อนชื่อตารางชื่อฟิลด์และข้อมูล - แยกแท็บแล้วกด Go!
คุณสามารถสร้างตารางที่เหมาะสมผ่านอินเทอร์เฟซสตูดิโอการจัดการและแทรกข้อมูลลงในตารางตามที่แสดงด้านล่าง อาจใช้เวลาสักครู่ขึ้นอยู่กับปริมาณข้อมูล แต่มีประโยชน์มาก
คุณสามารถใช้คำสั่ง excel ต่อไปนี้:
="INSERT INTO table_name(`"&$A$1&"`,`"&$B$1&"`,`"&$C$1&"`, `"&$D$1&"`) VALUES('"&SUBSTITUTE(A2, "'", "\'")&"','"&SUBSTITUTE(B2, "'", "\'")&"','"&SUBSTITUTE(C2, "'", "\'")&"', "&D2&");"
สิ่งนี้ปรับปรุงตามคำตอบของ Hart CO เนื่องจากคำนึงถึงชื่อคอลัมน์และกำจัดข้อผิดพลาดในการคอมไพล์เนื่องจากคำพูดในคอลัมน์ คอลัมน์สุดท้ายเป็นตัวอย่างของคอลัมน์ค่าตัวเลขโดยไม่มีเครื่องหมายคำพูด
ขึ้นอยู่กับฐานข้อมูลคุณสามารถส่งออกเป็น CSV แล้วใช้วิธีการนำเข้า
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
คุณสามารถใช้ VB เพื่อเขียนสิ่งที่จะส่งออกไปยังไฟล์ทีละแถวโดยเพิ่มคำสั่ง sql ที่เหมาะสมรอบ ๆ ข้อมูลของคุณ ฉันได้ทำสิ่งนี้มาก่อน
นี่เป็นอีกหนึ่งเครื่องมือที่ใช้งานได้ดีมาก ...
http://www.convertcsv.com/csv-to-sql.htm
สามารถใช้ค่าที่คั่นด้วยแท็บและสร้างสคริปต์ INSERT เพียงคัดลอกและวางและในตัวเลือกในขั้นตอนที่ 2 ให้เลือกช่อง "แถวแรกคือชื่อคอลัมน์"
จากนั้นเลื่อนลงและในขั้นตอนที่ 3 ป้อนชื่อตารางของคุณในช่อง "Schema.Table หรือ View Name:"
ใส่ใจกับกล่องกาเครื่องหมายลบและสร้างตารางด้วยและตรวจสอบให้แน่ใจว่าคุณได้ตรวจสอบสคริปต์ที่สร้างขึ้นก่อนที่จะเรียกใช้
นี่เป็นวิธีที่รวดเร็วและน่าเชื่อถือที่สุดที่ฉันพบ
ใช้ConvertFrom-ExcelToSQLInsert
จากImportExcelในแกลเลอรี 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
นี่คือลิงค์ไปยัง Online automator เพื่อแปลงไฟล์ CSV เป็นคำสั่ง SQL Insert Into:
แบบสอบถามนี้ฉันสร้างขึ้นเพื่อแทรกข้อมูลไฟล์ Excel ลงในฐานข้อมูลใน id และราคานี้เป็นค่าตัวเลขและฟิลด์วันที่ด้วย แบบสอบถามนี้สรุปประเภททั้งหมดที่ฉันต้องการซึ่งอาจเป็นประโยชน์กับคุณเช่นกัน
="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
คุณสามารถใช้วิธี C # ด้านล่างเพื่อสร้างสคริปต์แทรกโดยใช้แผ่นงาน Excel เพียงแค่คุณต้องนำเข้าแพ็คเกจ OfficeOpenXml จาก NuGet Package Manager ก่อนที่จะดำเนินการตามวิธีนี้
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();}
ฉันต้องสร้างสคริปต์ SQL บ่อยๆและเพิ่มเข้าไปในการควบคุมแหล่งที่มาและส่งไปยัง DBA ฉันใช้แอพ ExcelIntoSQL นี้จาก windows store https://www.microsoft.com/store/apps/9NH0W51XXQRM มันสร้างสคริปต์ที่สมบูรณ์ด้วย "CREATE TABLE" และ INSERTS
ฉันมีวิธีที่เชื่อถือได้ในการสร้างการแทรก SQL อย่างสม่ำเสมอและคุณสามารถแก้ไขพารามิเตอร์บางส่วนในการประมวลผลได้มันช่วยฉันได้มากในงานของฉันเช่นคัดลอกข้อมูลหนึ่งร้อยข้อมูลไปยังฐานข้อมูลที่มีโครงสร้างและจำนวนฟิลด์ที่เข้ากันไม่ได้ IntellIJ DataGripเครื่องมืออันทรงพลังที่ฉันใช้ DG สามารถรับข้อมูลจากสำนักงาน WPS หรือ MS Excel ตามคอลัมน์หรือบรรทัด หลังจากคัดลอกDG สามารถส่งออกข้อมูลแทรก
insert
&update
ที่นี่ ☺