注册 登录
编程论坛 VFP论坛

请教一下:一个表里有多个字段,怎么快速地从另一个相似的临时表中导入数据?

shonken 发布于 2022-02-15 09:53, 1459 次点击
假设有个表A,里面有50个字段,字段的名称无规律,另一个临时表B由用户从A表中选择字段从其他地方提取数据生成,表B的字段数<=表A

Insert Into 表A Select * From 表B Where 选择

这样写如果字段不一致时就会出错

一个个字段敲,又太麻烦

是不是可以用变量来处理?
7 回复
#2
laowan0012022-02-15 10:00
如果在VFP里做,很简单
select 表B
append from dbf(表A)
同名字段内容会被添加

如果在sqlserver里,那就要拼出表B的字段列表,然后用 insert into 表A (字段列表) select 字段列表 FROM 表B
#3
mywisdom882022-02-15 10:03
字段名称,不相同,不能偷懒
如1
表1(a1 c(10),a2 n(5,2),a3 c(10),a4 L)
表2(b1 c(10),b2 n(5,2),b3 c(10),b4 L)
这样,虽然名称不同,但数量和类型分别对应相同,是可以这样做的
Insert Into 表1 Select * From 表2 Where 选择
#4
mywisdom882022-02-15 10:05
一般,我们都这样做,比较合适
insert into 表A (字段列表) select 字段列表 FROM 表B
#5
shonken2022-02-15 14:35
拼字段列表,有时候字段数太多超字符长度,印象中可以用变量代替
Fields1="A1,A2,A3,A4"
Fields2="B1,B2,B3,B4"
Select &Fields1,&Fields2 From 表A Into Cursor 表B

就是想偷懒.....
#6
shenlancwz2022-02-15 17:27
append from 最佳
#7
mywisdom882022-02-16 08:53
以下是引用shonken在2022-2-15 14:35:39的发言:

拼字段列表,有时候字段数太多超字符长度,印象中可以用变量代替
Fields1="A1,A2,A3,A4"
Fields2="B1,B2,B3,B4"
Select &Fields1,&Fields2 From 表A Into Cursor 表B

就是想偷懒.....

怕字符超长,用 TEXTE TO ... ENDTEXT
TEXT TO cSql TEXTMERGE NOSHOW PRETEXT 4
  CREATE ........................................            && 第1行命令
  INSERT ........................................   ;        && 第2行命令,写不完,分行
  UPDATE ........................................            && 第3行命令
  ...............................................            && 第4行命令
  ...............................................            && 第5行命令
  ...............................................            && 第6行命令
  ...                                                        && 第N行命令
ENDTEXT
EXECSCRIPT(cSql)
#8
schtg2022-02-17 06:20
细致!
1