3

我在 2 个不同的数据库中有 2 个表。第一个表(客户)有很多数据,有 10-12 列。然后我有第二个表(CustumersNew),它有新的列,应该代表与客户相同的列,只是名称数据类型不同。CustomerNew 当前为空。我想所有数据从表 Custumers 移动到表 CustumersNew。

这里的问题是表 Custumers UserID 列的数据类型为uniqueidentifier ,而 CustumerNew ID 列的数据类型为int。因此,与其他库伦一样,它们在数据类型上完全不匹配。

如何将数据从 A 移动到 B?

编辑: 我正在使用 MS-SQL

4

3 回答 3

1

我会使用该INSERT INTO CustumersNew(<column list>) SELECT <column list from Custumers CONVERTed to data types that match the data type of corresponding columns in CustumersNew> FROM Custumers声明。

例如

INSERT INTO CustumersNew(UserId, Name, Age)
SELECT UserId, CONVERT(NVARCHAR(128), Name), CONVERT(INT, Age) 
FROM Custumers

我假设 Name 和 Age 在这两个表中是不同的类型。您需要编写类似的转换语句,其中数据类型参数应与 CustumersNew 表中的数据类型匹配。

由于uniqueidentifier无法将 UserId/CustomerId 映射到整数,并且我从功能的角度怀疑此列中的值的相关性,因此我会将 UserId/CustomerId 建模为新表中的AUTO/IDENTITY列。

于 2012-10-01T11:16:26.640 回答
0

好吧,您不能将 a 存储uniqueidentifierint列中,因此您必须想出一组新的键。

大多数数据库系统都提供了一种用整数值对记录进行顺序编号的机制。在 SQL Server 中,他们使用IDENTITY列,在 Oracle 中他们使用sequences,我认为在 MySql 中您将列指定为auto_increment.

设置好新表(使用自动编号方案)后,只需使用 SQL 插入数据:

INSERT INTO CUSTOMERS_NEW (COL2, COL3, COL4) SELECT COL2, COL3, COL4 FROM CUSTOMERS

请注意,插入语句不包括 ID 列 - 应该为您自动填充。

于 2012-10-01T11:19:39.170 回答
0

如果你是not able to use inserthave to use update它会是这样的

UPDATE change 
SET    widget_id = (SELECT insert_widget.widget_id 
                    FROM   insert_widget 
                    WHERE  change.id = insert_widget.id) 
WHERE  change.id = (SELECT insert_widget.id 
                    FROM   insert_widget 
                    WHERE  change.id = insert_widget.id) 

在这个例子中,我想将widget_id列表单insert_widget表移动到change表中,但是更改表已经有数据,所以我必须使用更新语句

于 2018-07-09T07:59:44.723 回答