Для однократного извлечения используйте vba, чтобы разбить данные на две отдельные временные таблицы в Excel и стандартных методах для вставки данных в базу данных.
В приведенном ниже коде предполагается, что данные находятся на листе с именем «Данные».и начинается в ячейке A1
Добавьте два листа с именами "Catagory" и "Product" * Код 1004 *
циклически проходит по листу данных, копируя каждую строку на правильный лист таблицы
Sub SplitData()
Dim rData As Range
Dim rCat As Range
Dim rProd As Range
Dim Cat As String
Dim Prod As String
Dim Price As Currency
Dim Cat_ID As Long
Dim Prod_ID As Long
Set rData = ActiveWorkbook.Worksheets("Data").Cells(1, 1)
Set rCat = ActiveWorkbook.Worksheets("Catagory").Cells(1, 1)
Set rProd = ActiveWorkbook.Worksheets("Product").Cells(1, 1)
rCat = "id"
rCat.Offset(0, 1) = "title"
Set rCat = rCat.Offset(1, 0)
rProd = "id"
rProd.Offset(0, 1) = "title"
rProd.Offset(0, 2) = "catagory_id"
rProd.Offset(0, 3) = "price"
Set rProd = rProd.Offset(1, 0)
Cat_ID = 0
Prod_ID = 0
Do While rData <> ""
If rData.Font.Bold Then
Cat = rData
Cat_ID = Cat_ID + 1
rCat = Cat_ID
rCat.Offset(0, 1) = Cat
Set rCat = rCat.Offset(1, 0)
Else
Prod = rData
Price = rData.Offset(0, 1)
Prod_ID = Prod_ID + 1
rProd = Prod_ID
rProd.Offset(0, 1) = Prod
rProd.Offset(0, 2) = Cat_ID
rProd.Offset(0, 3) = Price
Set rProd = rProd.Offset(1, 0)
End If
Set rData = rData.Offset(1, 0)
Loop
End Sub