我想獲取位於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. MVC2:SQL Server表 - > Excel電子表格
- 2. LINQ表格到Excel電子表格
- 3. 將excel表格複製到表格中
- 4. 如何使用SSIS將Excel表格中的數據從Excel表格加載到SQL Server表格Pakcage
- 5. 從Excel導入到SQL表
- 6. 複製Excel表格到PowerPoint
- 7. Javafx複製表格到Excel
- 8. HTML表格到CSV或Excel
- 9. Excel表格到python字典
- 10. SQL表格到XML
- 11. Excel表格提示SQL登錄憑據
- 12. 如何將Excel表連接到SQL表
- 13. 如何從Excel電子表格更新SQL表格?
- 14. 對象列表到Excel電子表格?
- 15. 加入Excel電子表格到SQL數據庫
- 16. 最快的ADO從sql-server複製粘貼表格到Excel
- 17. 從Excel表格中將數據寫回到SQL
- 18. 導出包含多個表格的SQL Server結果到Excel
- 19. 通過腳本組件導入Excel數據到SQL表格
- 20. 導入Excel表格到SQL Server,跳過主鍵違規
- 21. 從Excel電子表格中導入位類型到SQL Server中
- 22. 動態Excel表格加載到SQL使用SSIS
- 23. Excel Sheet SQL表
- 24. 創建SQL表格,在Excel更新時自動從Excel導入
- 25. C#導入Excel數據到SQL表
- 26. Excel到SQL表字段值附加0
- 27. 將Excel工作表保存到SQL中
- 28. 導入Excel到SQL數據庫表
- 29. VBA:從Excel導入表到SQL
- 30. 使用VBA將Excel表導出到sql
你爲什麼說SSIS是昂貴的? – FLICKER