Использование SqlbulkcopycolumnMapping для копирования данных из базы данных в базу данных sql - PullRequest
0 голосов
/ 08 февраля 2019

Я пытаюсь отобразить столбцы из Datatable в базу данных SQL.Table при сопоставлении столбцов.Но я продолжаю получать эту ошибку

"System.InvalidOperationException: 'Указанное имя столбца' FobID 'не совпадает ни с одним столбцом в источнике данных.'"

см. Код, который я использую ниже.

using(SqlBulkCopy sqlcopyTFobs = new SqlBulkCopy(destCNS))
                {
                    sqlcopyTFobs.DestinationTableName = "[dbo].[TFobs]";

                    SqlBulkCopyColumnMapping mapFodID = new SqlBulkCopyColumnMapping("FobID", "FobID");
                    sqlcopyTFobs.ColumnMappings.Add(mapFodID);

                    sqlcopyTFobs.WriteToServer(dtTPositions);
                }

Если я копирую все столбцы, используя следующий код, все данные копируются.Но мне нужно скопировать только определенные столбцы.

using(SqlBulkCopy sqlcopyTFobs = new SqlBulkCopy(destCNS))
                {
                    sqlcopyTFobs.DestinationTableName = "[dbo].[TFobs]";

                    sqlcopyTFobs.WriteToServer(dtTPositions);
                }

1 Ответ

0 голосов
/ 08 февраля 2019

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

Отображения столбцов определяют отображение между источником данных и целевой таблицей.

Если отображения не определены, то есть коллекция ColumnMappings пуста -столбцы> отображаются неявно на основе порядкового номера.Чтобы это работало, исходная и> целевая схемы должны совпадать.В противном случае будет выдано исключение InvalidOperationException.

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

Вы можете ссылаться на столбцы источника и назначения по имени или порядковому номеру.Вы также можете смешивать> по имени и по порядковым ссылкам на столбцы в одной и той же коллекции сопоставлений.

Похоже, что ваше сопоставление не точное.

Если вы пытаетесь удалить некоторые поля из копии, посмотрите эту статью на stackoverflow Пропустите некоторые столбцы в SqlBulkCopy

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...