将特定数据迁移到具有相同字段但不同大小和数据类型的另一个表

时间:2014-05-08 02:05:11

标签: sql excel tsql sql-server-2008-r2 data-migration

我正在通过导入将数据从excel迁移到SQL中的数据库,从而使得具有字段nvarchar(255)作为其数据类型的物理表,excel文件中的元素来自数据库的同一副本它将被导入但来自不同的环境,所以我确信excel文件中的数据在导入它的字段中是兼容的。我的斗争是当我将excel中的数据导入SQL时,它会创建另一个数据类型为nvarchar(255)的物理表,而真实表的每个字段具有不同的数据类型

如果我要将所有数据从importedDataTable迁移到真正的MyTable,我将使用类似下面的代码:

Insert into Mytable
(field1
,field2
..
..
..)
Select 
field1
,field2
..
..
..
from ImportedDatatable

通过这种方法会产生类似

的错误
String or binary data would be truncated.

所以为了解决这个问题,我需要从ImportedDatatable投出每一个数据来选择它以使其工作,问题是我有很多表,其中一些包含100个字段并逐个转换它们需要时间..有没有其他方法可以做到这一点??

顺便说一句。链接服务器选择不是一个选项,因为这两个服务器来自不同的环境,并且公司策略不允许链接。那有什么帮助吗?

1 个答案:

答案 0 :(得分:0)

对此没有简单的解决方案,我很害怕。 我能想到的两个解决方案是:

1)SSIS包:创建OLE DB源和目标,并使其忽略截断错误。

2)一个存储过程,用于将每个nvarchar(255)列更改为目标表上的相应列长度(取自information_schema.columns)

在这两种情况下,列名匹配的事实使得任务不会太令人生畏。