SQL脚本实现数据从一张表导入另一张表

在Sybase数据库里

alter table tab_oa_dep_work modify dwcontent text
go

Sybase不支持字段属性直接修改为text和image属性

 

因为用户表里有数据,但现在要改为大字段,此路不通,只能通过其他方法实现了

下面介绍一种用sql脚本实现此修改:

--更改部门上报dwcontent字段为text

--先创建一张临时表
create table tab_tmp_oa_dep_work (

 id                            varchar(10)                      not null  ,
 issuenum                      varchar(10)                          null  ,
 weekoder                      int                                  null  ,
 begindate                       varchar(20)                          null  ,
 enddate                         varchar(20)                          null  ,
 dep                           varchar(60)                          null  ,
 content                       text                              null  ,
 filldate                        varchar(20)                          null  ,
 opcode                          varchar(10)                          null , 
  constraint pk_tab_tmp_oa_dep_work primary key (id)
)
go

 

--取出现在表里数据,插入临时表
insert into tab_tmp_oa_dep_work select id,issuenum,weekoder,begindate,enddate,dep,content,filldate,opcode from tab_oa_dep_work
go

 

--删除要修改的表,然后重建

drop table tab_oa_dep_work
go
create table tab_oa_dep_work (
 id                            varchar(10)                      not null  ,
issuenum                      varchar(10)                          null  ,
weekoder                      int                                  null  ,
 begindate                       varchar(20)                          null  ,
 enddate                         varchar(20)                          null  ,
 dep                           varchar(60)                          null  ,
 content                       text                                 null  ,
 filldate                        varchar(20)                          null  ,
 opcode                          varchar(10)                          null , 
  constraint pk_tab_oa_dep_work primary key (id)
)
go

 

--再从临时表里,把数据导入到修改后的表
insert into tab_oa_dep_work select id,issuenum,weekoder,begindate,enddate,dep,content,filldate,opcode from tab_tmp_oa_dep_work
go

 

--数据导完后,再删除临时表,从而完成了表的修改工作
drop table tab_tmp_oa_dep_work
go

### 数据迁移方法 在 MySQL 中,可以使用 `INSERT INTO ... SELECT` 的方式将数据一个筛选并导入一个中。这种方式允许通过条件过滤源中的记录,并将其插入目标[^1]。 以下是实现此操作的具体语法: ```sql INSERT INTO target_table (column1, column2, ...) SELECT source_column1, source_column2, ... FROM source_table WHERE conditions; ``` #### 关键点说明 - **列匹配**:目标 (`target_table`) 和源 (`source_table`) 的列数以及数据类型应兼容。 - **条件过滤**:可以通过 `WHERE` 子句指定筛选条件来控制哪些数据被迁移到目标。 - **性能优化**:如果涉及大量数据的迁移,建议禁用索引或外键约束后再执行该语句,完成后重新启用它们以提高效率[^3]。 #### 示例代码 假设有一个名为 `business_listings` 的业务列,其中包含多个城市的商业信息。现在希望创建一个新的 `cities` 来存储唯一的城市名称及其对应的商业数量,则可按如下方式进行操作: ```sql -- 创建新结构(仅复制字段定义) CREATE TABLE cities ( city_name VARCHAR(255), listing_count INT ); -- 插入经过筛选的数据 INSERT INTO cities (city_name, listing_count) SELECT city, COUNT(*) AS total_listings FROM business_listings GROUP BY city; ``` 以上脚本首先定义了一个新的格用于保存城市统计信息;接着利用聚合函数计算每座城巿所关联的企业数目并将结果写入新建的目标格之中[^4]。 ### 注意事项 当采用诸如 `"CREATE TABLE...AS SELECT"` 或者组合形式如 `"CREATE TABLE LIKE"...+"INSERT INTO...SELECT..."` 这样的策略时需要注意并发访问的影响——即在整个命令执行期间其他应用程序连接可能无法读取目的的内容直至整个事务完成为止[^2][^3]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值