从一个表数据导入到另外一个表

PL/SQL 数据迁移示例
本文介绍了一个使用 PL/SQL 进行数据迁移的例子,包括如何从一个数据库查询数据并插入到另一个数据库的特定表中。此外还讨论了处理主键冲突的方法。
declare
cur_id number;
cur_pname varchar(200);
cursor related_cursor IS
      select model_id,project_name from t_svn_models where model_id = 5111551;
begin
  open related_cursor;
  loop
    fetch related_cursor into cur_id,cur_pname;
    exit when related_cursor%notfound;
       insert into t_pmp_projects (project_id,project_name,svn_model_id,status) values
          (SEQ_PROJECT.nextval,cur_pname,cur_id,4);
  end loop;
  close related_cursor;  
end;
commit;


输出语句:

DBMS_OUTPUT.PUT_LINE('cur_parent_user_id:'||cur_parent_user_id);
DBMS_OUTPUT.PUT_LINE('cur_user_id:'||cur_user_id);


pl/sql  一个数据库连接到另外一个数据库后,在一个数据库中查询另外一个数据库的数据用的sql

insert into m_users (select * from m_users@pps32_oa_dev.com);


导入数据时候注意主键问题:如果主键用序列,则最好不要将ID也导入到表中以防止 自增的序列增加到与当前ID相同后出现错误


### 数据迁移方法 在 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、付费专栏及课程。

余额充值