Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/67.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 在表中为另一个表中的每个id插入行_Sql_Tsql - Fatal编程技术网

Sql 在表中为另一个表中的每个id插入行

Sql 在表中为另一个表中的每个id插入行,sql,tsql,Sql,Tsql,我尝试在这里搜索类似的解决方案,但没有看到,因此我想知道实现以下目标的最佳方法是什么 我有一个1700多万行的表,所有行都有一个唯一的ID。我们最近创建了一个新表,该表将与前一个表一起使用,其中新表的外键是旧表的唯一ID 例如。 表1-id,字段1,字段2,字段3。。。 表2-表1.id,字段1 问题是,因为我们要将其迁移到一个活动环境中,所以需要用一行来填充表2,该行包含表1中每一行的表1中的id。 例如,表1-1,测试,空 表2现在需要有:1,null。。。对于表1中的每一行,依此类推。主要

我尝试在这里搜索类似的解决方案,但没有看到,因此我想知道实现以下目标的最佳方法是什么

我有一个1700多万行的表,所有行都有一个唯一的ID。我们最近创建了一个新表,该表将与前一个表一起使用,其中新表的外键是旧表的唯一ID

例如。 表1-id,字段1,字段2,字段3。。。 表2-表1.id,字段1

问题是,因为我们要将其迁移到一个活动环境中,所以需要用一行来填充表2,该行包含表1中每一行的表1中的id。 例如,表1-1,测试,空 表2现在需要有:1,null。。。对于表1中的每一行,依此类推。主要问题是表1中的id并非都是顺序的,因此我们必须从表1中读取,然后根据找到的id插入表2中

有没有更简单的方法? 提前谢谢 乔

同样要澄清的是,表2将是新数据,表1中包含的唯一内容是保持外键关系的id


另外,这是sql server 2000,我不确定我是否完全在关注您,但是否希望这项工作为您服务

INSERT INTO table2 ( SELECT field1, field2, field3... FROM table1 )
如果我理解正确,您希望表1中的每条记录都有一条记录在表2中。这样就可以了。只需按照正确的顺序匹配select中的字段,并为表2中没有的任何字段指定常量


嗯。如果我不理解,请告诉我,我会再次尝试帮助。

由于行太多,您可能会遇到事务日志空间问题,以及运行大型插入事务的时间长度问题

如果运行时是一个约束条件,我会认真推荐使用Bcp或任何适用于平台的工具

从原始表中选择id,使用该id为扩展表构建Bcp文件,然后将其Bcp导入

您会发现,在10000条记录的文件中进行Bcp比在17000000行的humungus文件中进行Bcp更有效


此外,您还可以在上线前在后台完成这项工作,并编写一个t-sql作业,该作业可能是在您使用id的snapshop之后插入的。

您需要阅读本文

主要问题是,表1中的id并非都是顺序的,因此我们必须从表1中读取,然后根据找到的id插入到表2中

是的,看看我在上面文章中的答案,用第2项写一个关键的行走循环


确保在编写insert语句时,您提供了一个字段列表—正如我在第1项中所说。

如果我理解正确,您希望表2中的每条记录对应表1中的每条记录。 我还认为,除了参考表1之外,表2最初应该包含空行

那么假设

table1 (ID, field1, field2, ...)
table2 (ID, table1_ID, fieldA, fieldB,...)
-- where table1_ID is a reference to ID of table1
创建表2后,只需运行此insert语句即可

insert into table2(table1_ID) 
select ID from table1

这种语法在SQL server中有效吗?在尝试时,我得到一个错误,在SELECTyes附近显示error,这应该也适用于sql server。用你的语法创建一个抛出错误的问题,如果你愿意,可以发送一个链接。为了使它在SQL Server中工作,我必须写:INSERT INTO table2 field1,field2,field3从table1中选择field1,field2,field3