Чтение файла Excel с несколькими рабочими таблицами в базу данных

Я здесь. Я читаю файл excel, который имеет три листа, используя функцию набора данных exceldatareader. После прочтения файла у меня есть набор данных, который содержит три таблицы, по одному для каждого листа.

Теперь мне нужно экспортировать эти данные по строкам в две разные таблицы sql. Эти таблицы имеют автоматический инкрементный первичный ключ, а PK таблицы A составляет FK в TableB. Для этого я использую хранимую процедуру с SCOPE_IDENTITY ().

Каждый столбец в файле excel является переменной в хранимой процедуре, так как я повторяю строки по строкам, я могу назначить эти переменные, а затем отправить их через хранимую процедуру.

Теперь вопрос заключается в том, как я перебираю этот набор данных и присваиваю каждой строке [col] переменной для моей хранимой процедуры.

Спасибо за помощь.

Обновить дополнительную информацию:

1. Таблица 1 идет к таблице 1 в sql
2. Таблица 2 идет в Таблицу 2 в sql
3. Таблица 3 также переходит в Таблицу 2 в sql
4. Таблица 1 имеет отношение 1 к многим к таблице 2

c#,

0

Ответов: 1


0

Ниже приведена часть шаблона с половинной псевдокодом, начиная с:

var datatable = dataset.Tables[0];
using(var proc = connection.CreateCommand(...))
{
    proc.Parameters.Add("@firstcolumnname", SqlDbType.Int);
    foreach(DataRow dr in datatable.Rows)
    {
        /* check for DbNull.Value if source column is nullable! */
        proc.Parameters["@firstcolumnname"].Value = dr["FirstColumnName"];

        proc.ExecuteNonQuery();
    }
}

Но это имеет смысл только в том случае, если вы выполняете обработку данных внутри хранимой процедуры. В противном случае это требует массовой вставки, особенно если у вас есть много (тысяч) строк в листах excel.

Отношение «один ко многим» (внешний ключ) может быть сложным, если вы можете управлять порядком вставок, а затем просто начинать с «одной» таблицы, а затем загружать «многие» таблицы. Пусть хранимая процедура соответствует значениям ключа, если они не являются частью исходных данных Excel.

Вся история, если вы находитесь в параллельной многопользовательской среде, и к таблицам обращаются и записываются, пока вы загружаете. Затем вам нужно будет добавить транзакции, чтобы сохранить ссылочную целостность во всем процессе.

C #,
Похожие вопросы