我有Employees和Non Employees表(正在从视图中导入数据)。
现在,我需要创建一个包含Employee和Non Employee数据的表。我无法从这里进步。
当我使用导入导出任务尝试时,我收到此错误:
消息 •错误0xc02020c5:数据流任务1:将列“单元号”(44)转换为列“单元号”(101)时数据转换失败。转换返回状态值2和状态文本“由于潜在的数据丢失,无法转换该值。”。 (SQL Server导入和导出向导) •错误0xc0209029:数据流任务1:SSIS错误代码DTS_E_INDUCEDTRANSFORMFAILUREONERROR。 “数据转换0 - 0.Outputs [数据转换输出] .Columns [单元号]”失败,因为错误代码0xC020907F发生,错误行处置“数据转换0 - 0.Outputs [数据转换输出] .Columns [单元号]“指定出错时失败。指定组件的指定对象发生错误。在此之前可能会发布错误消息,其中包含有关失败的更多信息。 (SQL Server导入和导出向导) 错误0xc0047022:数据流任务1:SSIS错误代码DTS_E_PROCESSINPUTFAILED。组件“数据转换0 - 0”(85)上的ProcessInput方法在处理输入“数据转换输入”(86)时失败,错误代码为0xC0209029。标识的组件从ProcessInput方法返回错误。该错误特定于组件,但错误是致命的,将导致数据流任务停止运行。在此之前可能会发布错误消息,其中包含有关失败的更多信息。 (SQL Server导入和导出向导)
答案 0 :(得分:2)
首先通过脚本创建一个包含所需列的新表。
CREATE TABLE dbo.Employees (
COLUMN_A TYPE,
COLUMN_B VARCHAR(100)
);
在此之后,选择旧桌子做了一个插入。
INSERT INTO dbo.Employees ( COLUMN_A, COLUMN_B )
SELECT COLUMN_A, COLUMN_B FROM TABLE1 UNION ALL
SELECT COLUMN_A, COLUMN_B FROM TABLE2;
并创建一个索引,以提高最常查询列的性能。
答案 1 :(得分:1)
在查看详细信息后,似乎“单元号”列具有不同的数据类型。 要解决这个问题,要么使表的数据类型相同,要么创建一个具有高数据类型然后是现有数据类型的新表(意味着如果你的表有小int,小int),那么公用表将具有smallint数据类型。 / p>
答案 2 :(得分:1)
当varbinary类型的行插入varchar或任何其他数据类型时,会导致隐式转换问题。首先确定哪个列被定义为varbinary并使用强制转换为cast(column_name为varchar(100)),问题将得到解决。
答案 3 :(得分:1)
为什么使用“导出导出”向导?
如果您的表和视图位于同一个数据库中,您可以执行以下操作:
arescale.m
如果使用导入导出任务,请确保源和目标数据类型和长度匹配(如果目标列长度小于源,则可能发生char / varchar / nchar / nvarchar截断)。