Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 在具有不同数据类型的列上的两个表之间移动数据_Sql_Sql Server_Sqldatatypes - Fatal编程技术网

Sql 在具有不同数据类型的列上的两个表之间移动数据

Sql 在具有不同数据类型的列上的两个表之间移动数据,sql,sql-server,sqldatatypes,Sql,Sql Server,Sqldatatypes,我在两个不同的数据库中有两个表。第一个表(Custumers)有许多数据,包含10-12个coulmns。 然后是第二个表(CustumersNew),它有新的列,这些列应该表示与custumer相同的列,只是具有不同的名称和数据类型。CustumersNew当前为空。我想将所有数据从表CUSTOMERS移动到表CUSTOMERSNEW 这里的问题是表Custumers UserID列具有数据类型uniqueidentifier 并且CustumerNew ID列具有数据类型int。因此,与其他

我在两个不同的数据库中有两个表。第一个表(Custumers)有许多数据,包含10-12个coulmns。 然后是第二个表(CustumersNew),它有新的列,这些列应该表示与custumer相同的列,只是具有不同的名称数据类型。CustumersNew当前为空。我想将所有数据从表CUSTOMERS移动到表CUSTOMERSNEW

这里的问题是表Custumers UserID列具有数据类型uniqueidentifier 并且CustumerNew ID列具有数据类型int。因此,与其他coulmn一样,它们在数据类型上也不匹配

如何将数据从A移动到B

编辑:
我使用的是MS-SQL

我将使用
插入CustumersNew()从Custumers
语句选择

例如

我假设姓名和年龄在这两个表中是不同的类型。您需要编写一个类似的convert语句,其中data type参数应该与CUSTOMERSNEW表中的数据类型匹配


由于UserId/CustomerId是
uniqueidentifier
无法映射为整数,并且我从功能角度怀疑此列中的值的相关性,因此我将在新表中将UserId/CustomerId建模为
AUTO
/
IDENTITY
列,您不能在
int
列中存储
uniqueidentifier
,因此您必须想出一组新的键

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

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

插入到新客户中(COL2、COL3、COL4)
从客户中选择COL2、COL3、COL4


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

如果您
无法使用insert
并且
必须使用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\u id
列形式
insert\u widget
表移动到
change
表,但change表已经有数据,所以我必须使用update语句

那么,您希望如何合并这些数据?对于此
uniqueidentifier
customerid,您希望如何从中获取id?基于它生成一个新的还是什么?请添加一些示例数据,并列出字段及其数据类型。这将是有用的。您有在这些数据库上执行外部脚本的选项吗?使用ruby这样的脚本语言可能非常简单。啊!我没有意识到
uniqueidentifier
就像一个GUID,并认为它是一个自动标识列。我更新了我的答案,我将如何处理它以及为什么。谢谢你的评论。非常感谢你的回答。我还没有测试你的解决方案,但现在应该可以了!
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)