我想獲取位於Azure Blob存儲中的Excel工作簿中的數據(此外,Excel文件每天手動更新,然後通過MS Flow導出到Blob存儲)以及然後將該數據導出到Azure SQL數據庫中的某些表中。我不能使用SSIS包,因爲這太昂貴了。任何人都知道如何在沒有SSIS的情況下完成這項任務?我研究過OPENROWSET和連接的服務器,但都是「我的SQL服務器版本不支持」。我也考慮將Excel文件轉換爲CSV然後使用ADF,但我無法弄清楚如何將其轉換爲CSV中的blob ...(無需手動上傳)Excel到SQL表格
0
A
回答
1
我也考慮將Excel文件轉換爲CSV然後使用ADF,但我無法弄清楚如何將其轉換爲CSV中的blob ...(無需手動上傳)
根據您的描述,我建議您可以嘗試使用天藍色的webjob或azure功能來實現您的要求。
通過使用這兩個服務,您可以啓用blob觸發器(當新文件被添加到blob中)或時間觸發器(每天觸發該函數)來執行函數以將數據從blob存儲導出到azure sql數據庫直接。
更多細節,你可以參考下面的代碼(Web作業規範)和文章:
Webjob blobtrigger,webjob timer trigger。
//記得從Nuget Package安裝DocumentFormat.OpenXml。 public class Functions {
public static string GetCellValue(SpreadsheetDocument document, Cell cell)
{
SharedStringTablePart stringTablePart = document.WorkbookPart.SharedStringTablePart;
string value = cell.CellValue.InnerXml;
if (cell.DataType != null && cell.DataType.Value == CellValues.SharedString)
{
return stringTablePart.SharedStringTable.ChildElements[Int32.Parse(value)].InnerText;
}
else
{
return value;
}
}
public static void ExportExcelToDatabase ([BlobTrigger("excel/testexcel.xlsx")] Stream blobStream, TextWriter log)
{
log.WriteLine("Start export excel to azure sql database");
string connectionStr = "{sql database connection string}";
//This is the excel table column name
List<string> columns = new List<string>() { "Name", "Class", "Score", "Sex" };
string tableName = "StudentScore";
DataTable dt = new DataTable();
using (SpreadsheetDocument spreadSheetDocument = SpreadsheetDocument.Open(blobStream, false))
{
WorkbookPart workbookPart = spreadSheetDocument.WorkbookPart;
IEnumerable<Sheet> sheets = spreadSheetDocument.WorkbookPart.Workbook.GetFirstChild<Sheets>().Elements<Sheet>();
string relationshipId = sheets.First().Id.Value;
WorksheetPart worksheetPart = (WorksheetPart)spreadSheetDocument.WorkbookPart.GetPartById(relationshipId);
Worksheet workSheet = worksheetPart.Worksheet;
SheetData sheetData = workSheet.GetFirstChild<SheetData>();
IEnumerable<Row> rows = sheetData.Descendants<Row>();
foreach (Cell cell in rows.ElementAt(0))
{
dt.Columns.Add(GetCellValue(spreadSheetDocument, cell));
}
foreach (Row row in rows.Skip(1))
{
DataRow tempRow = dt.NewRow();
for (int i = 0; i < row.Descendants<Cell>().Count(); i++)
{
tempRow[i] = GetCellValue(spreadSheetDocument, row.Descendants<Cell>().ElementAt(i));
}
dt.Rows.Add(tempRow);
}
}
//Bulk copy datatable to DB
SqlBulkCopy bulkCopy = new SqlBulkCopy(connectionStr);
try
{
bulkCopy.DestinationTableName = tableName;
columns.ForEach(col => { bulkCopy.ColumnMappings.Add(col, col); });
bulkCopy.WriteToServer(dt);
}
catch (Exception ex)
{
throw ex;
}
finally
{
bulkCopy.Close();
}
log.WriteLine("End export excel to azure sql database");
}
}
相關問題
- 1. 轉換SQL表到excel表格
- 2. SQL Server表格到Excel工作表
- 3. Excel表格到Html表格
- 4. Javascript表格到Excel
- 5. 導出HTML表格到Excel下載表格內容到Excel
- 6. MVC2:SQL Server表 - > Excel電子表格
- 7. 將excel表格(帶圖表)複製到另一個excel表格
- 8. LINQ表格到Excel電子表格
- 9. 將excel表格複製到表格中
- 10. 如何使用SSIS將Excel表格中的數據從Excel表格加載到SQL Server表格Pakcage
- 11. 從Excel導入到SQL表
- 12. 使用查詢導出SQL Server 2008表格到Excel工作表
- 13. Javafx複製表格到Excel
- 14. 保存HTML表格到Excel
- 15. HTML表格到CSV或Excel
- 16. 複製Excel表格到PowerPoint
- 17. Excel到動態Word表格
- 18. Excel表格到python字典
- 19. 從Outlook郵件整理表格到Excel表格使用Excel VBA
- 20. SQL表格到C#
- 21. SQL表格到XML
- 22. SQL導入Excel電子表格
- 23. Excel表格提示SQL登錄憑據
- 24. MS Access,Excel,SQL和新表格
- 25. SQL Server到EXCEL數字格式
- 26. 從excel導入到sql格式錯誤
- 27. 如何將Excel表連接到SQL表
- 28. 使用jdbc連接到excel表格而不指定DSN到Excel表格
- 29. 如何從Excel電子表格更新SQL表格?
- 30. 使用SQL語句將Excel電子表格插入Oracle表格
你爲什麼說SSIS是昂貴的? – FLICKER