将 2 个表中的数据合并为一个
Merge data from 2 tables into one
我有员工和非员工 tables(正在从视图中导入数据)。
现在,我需要创建一个 table 来保存员工和非员工数据。我无法从这里取得进展。
我在尝试使用导入-导出任务时遇到此错误:
- 正在执行(错误)
Messages
• Error 0xc02020c5: Data Flow Task 1: Data conversion failed while converting column "Unit Number" (44) to column "Unit Number" (101). The conversion returned status value 2 and status text "The value could not be converted because of a potential loss of data.".
(SQL Server Import and Export Wizard)
• Error 0xc0209029: Data Flow Task 1: SSIS Error Code DTS_E_INDUCEDTRANSFORMFAILUREONERROR. The "Data Conversion 0 - 0.Outputs[Data Conversion Output].Columns[Unit Number]" failed because error code 0xC020907F occurred, and the error row disposition on "Data Conversion 0 - 0.Outputs[Data Conversion Output].Columns[Unit Number]" specifies failure on error. An error occurred on the specified object of the specified component. There may be error messages posted before this with more information about the failure.
(SQL Server Import and Export Wizard)
Error 0xc0047022: Data Flow Task 1: SSIS Error Code DTS_E_PROCESSINPUTFAILED. The ProcessInput method on component "Data Conversion 0 - 0" (85) failed with error code 0xC0209029 while processing input "Data Conversion Input" (86). The identified component returned an error from the ProcessInput method. The error is specific to the component, but the error is fatal and will cause the Data Flow task to stop running. There may be error messages posted before this with more information about the failure.
(SQL Server Import and Export Wizard)
首先通过脚本创建一个新的 table,其中包含您想要的列。
CREATE TABLE dbo.Employees (
COLUMN_A TYPE,
COLUMN_B VARCHAR(100)
);
在此之后,选择您的旧 tables 进行插入。
INSERT INTO dbo.Employees ( COLUMN_A, COLUMN_B )
SELECT COLUMN_A, COLUMN_B FROM TABLE1 UNION ALL
SELECT COLUMN_A, COLUMN_B FROM TABLE2;
并创建索引以提高查询次数最多的列的性能。
查看详细信息后,"Unit Number" 列似乎有不同的数据类型。
为了克服这个问题,要么使 table 的数据类型相同,要么创建一个新的 table ,它具有比现有数据类型高的数据类型(意味着如果你的 table 有 tiny int,small int ) 那么常见的 table 将具有数据类型 smallint.
隐式转换问题是在将varbinary 类型的行插入到varchar 或任何其他数据类型时引起的。首先确定哪一列定义为varbinary,然后使用cast as cast(column_name as varchar(100)) 问题就解决了。
为什么要使用导入导出向导?
如果您的表和视图在同一个数据库中,您可以执行以下操作:
INSERT INTO TABLE
SELECT COL1, COL2....FROM VIEW
如果您正在使用导入导出任务,请确保源和目标数据类型和长度匹配(因为 char/varchar/nchar/nvarchar 如果目标列长度小于源列长度,可能会发生截断)。
我有员工和非员工 tables(正在从视图中导入数据)。
现在,我需要创建一个 table 来保存员工和非员工数据。我无法从这里取得进展。
我在尝试使用导入-导出任务时遇到此错误:
- 正在执行(错误)
Messages • Error 0xc02020c5: Data Flow Task 1: Data conversion failed while converting column "Unit Number" (44) to column "Unit Number" (101). The conversion returned status value 2 and status text "The value could not be converted because of a potential loss of data.". (SQL Server Import and Export Wizard) • Error 0xc0209029: Data Flow Task 1: SSIS Error Code DTS_E_INDUCEDTRANSFORMFAILUREONERROR. The "Data Conversion 0 - 0.Outputs[Data Conversion Output].Columns[Unit Number]" failed because error code 0xC020907F occurred, and the error row disposition on "Data Conversion 0 - 0.Outputs[Data Conversion Output].Columns[Unit Number]" specifies failure on error. An error occurred on the specified object of the specified component. There may be error messages posted before this with more information about the failure. (SQL Server Import and Export Wizard) Error 0xc0047022: Data Flow Task 1: SSIS Error Code DTS_E_PROCESSINPUTFAILED. The ProcessInput method on component "Data Conversion 0 - 0" (85) failed with error code 0xC0209029 while processing input "Data Conversion Input" (86). The identified component returned an error from the ProcessInput method. The error is specific to the component, but the error is fatal and will cause the Data Flow task to stop running. There may be error messages posted before this with more information about the failure. (SQL Server Import and Export Wizard)
首先通过脚本创建一个新的 table,其中包含您想要的列。
CREATE TABLE dbo.Employees (
COLUMN_A TYPE,
COLUMN_B VARCHAR(100)
);
在此之后,选择您的旧 tables 进行插入。
INSERT INTO dbo.Employees ( COLUMN_A, COLUMN_B )
SELECT COLUMN_A, COLUMN_B FROM TABLE1 UNION ALL
SELECT COLUMN_A, COLUMN_B FROM TABLE2;
并创建索引以提高查询次数最多的列的性能。
查看详细信息后,"Unit Number" 列似乎有不同的数据类型。 为了克服这个问题,要么使 table 的数据类型相同,要么创建一个新的 table ,它具有比现有数据类型高的数据类型(意味着如果你的 table 有 tiny int,small int ) 那么常见的 table 将具有数据类型 smallint.
隐式转换问题是在将varbinary 类型的行插入到varchar 或任何其他数据类型时引起的。首先确定哪一列定义为varbinary,然后使用cast as cast(column_name as varchar(100)) 问题就解决了。
为什么要使用导入导出向导?
如果您的表和视图在同一个数据库中,您可以执行以下操作:
INSERT INTO TABLE
SELECT COL1, COL2....FROM VIEW
如果您正在使用导入导出任务,请确保源和目标数据类型和长度匹配(因为 char/varchar/nchar/nvarchar 如果目标列长度小于源列长度,可能会发生截断)。