当 TableB 缺少一个字段时,使用 * 将 TableA 中的记录插入到 TableB
Insert Records from TableA to TableB using * when TableB missing one field
我有一个很大的 table 我正在尝试添加一个字段,到目前为止,由于我正在处理的 table 大小,它的效率要高得多
CREATE TABLE A LIKE B;
INSERT B SELECT * FROM A;
进行更改与进行任何Alter Table (
索引、字段等)
但是如果我这样做
CREATE TABLE A LIKE B;
Alter TABLE B ADD Fieldx varchar(100);
INSERT B SELECT * FROM A;
我不能再这样做了,因为我发现字段数不匹配。显然我可以 "just" 做:
CREATE TABLE A LIKE B;
Alter TABLE B ADD Fieldx varchar(100);
INSERT Into B(Field1,..,FieldN) SELECT Field1,...,FieldN FROM A;
但是我正在尝试用大量的 tables 来做到这一点,每个都有大量的字段,而且我已经有了一个很好的批处理过程,可以与 * 一起使用并且会很多更难尝试将每个 table 的每个字段显式推入每个 Insert
和 Select
.
有什么表达方式吗
INSERT B SELECT * FROM A;
当 B 现在比 A 多 1 列时不会 return 计数错误?
只要将新列添加到原列的末尾即可:
INSERT INTO B
SELECT *, ""
FROM A;
我有一个很大的 table 我正在尝试添加一个字段,到目前为止,由于我正在处理的 table 大小,它的效率要高得多
CREATE TABLE A LIKE B;
INSERT B SELECT * FROM A;
进行更改与进行任何Alter Table (
索引、字段等)
但是如果我这样做
CREATE TABLE A LIKE B;
Alter TABLE B ADD Fieldx varchar(100);
INSERT B SELECT * FROM A;
我不能再这样做了,因为我发现字段数不匹配。显然我可以 "just" 做:
CREATE TABLE A LIKE B;
Alter TABLE B ADD Fieldx varchar(100);
INSERT Into B(Field1,..,FieldN) SELECT Field1,...,FieldN FROM A;
但是我正在尝试用大量的 tables 来做到这一点,每个都有大量的字段,而且我已经有了一个很好的批处理过程,可以与 * 一起使用并且会很多更难尝试将每个 table 的每个字段显式推入每个 Insert
和 Select
.
有什么表达方式吗
INSERT B SELECT * FROM A;
当 B 现在比 A 多 1 列时不会 return 计数错误?
只要将新列添加到原列的末尾即可:
INSERT INTO B
SELECT *, ""
FROM A;