怎样方便的在sqlserver中将一表中的数据导入到另一个表中?急!!(200分)

  • 主题发起人 主题发起人 tomroman
  • 开始时间 开始时间
T

tomroman

Unregistered / Unconfirmed
GUEST, unregistred user!
表1中有某一字段名,如果正好表2中也有该字段名,就把该字段中的数据导入到表2
就是说,如果有表1:
id name date
1 10 100
2 20 200
表2为:(其中id为自动识别int)
id name date date2
1 30 300 400
要求执行sql之后
表2变成:
id name date date2
1 30 300 400
2 10 100 (变量1)
3 20 200 (变量1)
其中变量1为另外已知,表2中id只是识别作用,不一定为1,2,3顺序

 
insert into 表2(name,date,date2) select name,date,变量1的值 from 表1
 
insert into table2(name, date, date2)
Select name, date, 'eee' date2
From table1

 
先在第一个表里加一个DATE2段 再用
insert into table1(name,date1,date2) select name,date1,date2 from table2
 
用不着加字段.
 
用我的方法,因为类似select 字段名,'1',1 from table的语句是合法的,即select后
可不是字段名,可以是常量.
 
谢谢各位
但是有一点要说明的是:表1是动态的,预先我不知道表一中的字段名和有几个字段
请各位高手告诉该怎么办
 
详细说明一下
 
对不起,忘了灾添加一个注释:两个表在不同的数据库
我用的是 MS SQL7
 
用ms sql7的DTS(IMPORT AND EXPORT DATA)工具进行处理.
 
insert into table2(name,date1,date2) select name,date1,'' from table1
 
我是要在程序中实现,怎么使用ms sql7的DTS(IMPORT AND EXPORT DATA)工具
进行处理?

另外。表1表2分属于不同数据库,怎么写sql
 
可以用ms sql7的DTS(IMPORT AND EXPORT DATA)工具设计一个package,
然后在程序中用dtsrun命令调用.
或者用两个query分别连接分属于不同数据库表1表2,再用循环进行处理.
 
请问wind_cloudy
如果采用两个query,如何实现,麻烦提供一下代码,谢谢
 
1.用两个TDATABASE分别连接两个数据库.
2.query1、query2的databasename分别设为database1,database2的databasename
3.query1的sql为select name,date from table1;
query2的sql为select name,date,date2 from table2;
将query2的requestlive,cachedupdates设为true
4.with query1 do
begin
first;
while not Eof do
begin
query2.insert;
query2.fieldbyname('name'):=query2.fieldbyname('name');
query2.fieldbyname('date'):=query2.fieldbyname('date');
query2.fieldbyname('date2'):=变量1;
query2.post;
Next;
end;
end;
with query2 do
begin
Database2.StartTransaction;
try
ApplyUpdates;
Database1.Commit;
except
Database1.Rollback;
end;
CommitUpdates;
end;
 
用DTS直接导入,具体操作它有向导
 
insert into database1..table2(name, date, date2)
Select name, date, 'eee'
From database2..table1
 
wind_cloudy的回答中:
query2.fieldbyname('name'):=query2.fieldbyname('name');
query2.fieldbyname('date'):=query2.fieldbyname('date');
query2.fieldbyname('date2'):=变量1;
是什么意思?左边不能赋值啊,而且左边和右边是一样的?
 
sorry,笔误,query2.fieldbyname('name').asstring:=query1.fieldbyname('name').asstring;
query2.fieldbyname('date').asinteger:=query1.fieldbyname('date').asinteger;
 

Similar threads

S
回复
0
查看
1K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
923
SUNSTONE的Delphi笔记
S
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
后退
顶部