Вопрос

Я пишу небольшую утилиту, чтобы скопировать базу данных из запатентованной базы данных ODBC в базу данных SQL Server.Все работает отлично, за исключением случаев, когда я использую SQLBULKCOPY для копирования данных.Он работает в большинстве случаев, но не при попытке скопировать временное поле в DateTime SQL.Я получаю эту ошибку:

Данное значение типа Timepan из источника данных не может быть преобразован в тип DateTime указанного целевого столбца.

Когда я создаю схему в SQL Server, я должен сделать типы данных даты и полей времени в SQL Server, поэтому вокруг этого нет возможности.Я хотел использовать SQLBULKCOPY, поэтому мне не нужно было вручную читать через каждую запись в каждой таблице и обернуть логику вокруг особых случаев.Прежде чем я пойду на эту дорогу, есть ли другой способ сделать это?У меня вообще не контролируют в схеме или контентах базы данных.

Это было полезно?

Решение

Я предполагаю, что вы имеете дело с Pre-SQL Server 2008. SQL Server 2008 имеет типы данных даты и времени.

Думаю, вам придется использовать DataTable, который соответствует схеме SQL Server, и загрузите это из вашего устройства Reader, соответствующим образом изменяющим в любое время в DateTime, добавив информацию даты (например, 1/1/1900).Затем используйте WriteToserver (DataTable).Возможно, вы захотите сделать это в партиях, поскольку вы можете использовать кучу памяти, прочитав все это в DataTable.

Любая особая причина, по которой вы не можете использовать SSIS?

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top