我正在通过导入将数据从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个字段并逐个转换它们需要时间..有没有其他方法可以做到这一点??
顺便说一句。链接服务器选择不是一个选项,因为这两个服务器来自不同的环境,并且公司策略不允许链接。那有什么帮助吗?
答案 0 :(得分:0)
对此没有简单的解决方案,我很害怕。 我能想到的两个解决方案是:
1)SSIS包:创建OLE DB源和目标,并使其忽略截断错误。
2)一个存储过程,用于将每个nvarchar(255)列更改为目标表上的相应列长度(取自information_schema.columns)
在这两种情况下,列名匹配的事实使得任务不会太令人生畏。