plsql基本操作 複製表 匯出表 匯出表結構 及其匯入
plsql基本操作 複製表 匯出表 匯出表結構 及其匯入
上一片中介紹了安裝instantclient +plsql取代龐大客戶端的安裝,這裡說下plsql的基本操作
plsql操作介面圖:
1、複製表
語句:create table IGIS_COPY as select * from IGIS_LOCATION
2、查詢前5行資料
select * from IGIS_LOCATION where rownum < 6
注意:與sql server的top 5 不同,前5行資料只能使用where rownum < 6
匯出查詢出來的資料。注意是.sql檔案
下面是用txt開啟上面匯出的.sql檔案,其原理是是對資料庫進行insert
下面的資料表是
IGIS_LOCATION_COPY,是我將上面的
IGIS_LOCATION備份了一份,進行操作
prompt Importing table IGIS_LOCATION_COPY... set feedback off set define off insert into IGIS_LOCATION_COPY (DEVICECODE, TYPE, LONGITUDE, LATITUDE, DATETIME) values ('001FF92FABE165', 'man', 121.12, 31.12, to_date('26-04-2017 14:29:05', 'dd-mm-yyyy hh24:mi:ss')); insert into IGIS_LOCATION_COPY (DEVICECODE, TYPE, LONGITUDE, LATITUDE, DATETIME) values ('004999010640000', 'man', 121.12, 31.12, to_date('26-04-2017 14:29:05', 'dd-mm-yyyy hh24:mi:ss')); insert into IGIS_LOCATION_COPY (DEVICECODE, TYPE, LONGITUDE, LATITUDE, DATETIME) values ('012963007793321', 'man', 121.12, 31.12, to_date('26-04-2017 14:29:05', 'dd-mm-yyyy hh24:mi:ss')); insert into IGIS_LOCATION_COPY (DEVICECODE, TYPE, LONGITUDE, LATITUDE, DATETIME) values ('013437006991011', 'man', 121.12, 31.12, to_date('26-04-2017 14:29:05', 'dd-mm-yyyy hh24:mi:ss')); insert into IGIS_LOCATION_COPY (DEVICECODE, TYPE, LONGITUDE, LATITUDE, DATETIME) values ('013789000795180', 'man', 121.12, 31.12, to_date('26-04-2017 14:29:05', 'dd-mm-yyyy hh24:mi:ss')); prompt Done.
3、匯出整個表
右擊表,點匯出資料(或者單擊工具--匯出表)
選擇第二個“SQL插入”,注意要選上:建立表,否者匯出的.sql檔案沒有表結構,無法使用下一步中的“匯入表”方法匯入。
匯出的.sql檔案
prompt PL/SQL Developer import file prompt Created on 2017年5月3日 by Administrator set feedback off set define off prompt Creating IGIS_LOCATION_COPY... create table IGIS_LOCATION_COPY ( devicecode VARCHAR2(50) not null, type VARCHAR2(10) not null, longitude NUMBER(10,2) not null, latitude NUMBER(10,2) not null, datetime DATE not null ) tablespace SYSTEM pctfree 10 pctused 40 initrans 1 maxtrans 255 storage ( initial 64K next 1M minextents 1 maxextents unlimited ); prompt Disabling triggers for IGIS_LOCATION_COPY... alter table IGIS_LOCATION_COPY disable all triggers; prompt Deleting IGIS_LOCATION_COPY... delete from IGIS_LOCATION_COPY; commit; prompt Loading IGIS_LOCATION_COPY... insert into IGIS_LOCATION_COPY (devicecode, type, longitude, latitude, datetime) values ('001FF92FABE165', 'man', 121.12, 31.12, to_date('26-04-2017 14:29:05', 'dd-mm-yyyy hh24:mi:ss')); insert into IGIS_LOCATION_COPY (devicecode, type, longitude, latitude, datetime) values ('004999010640000', 'man', 121.12, 31.12, to_date('26-04-2017 14:29:05', 'dd-mm-yyyy hh24:mi:ss')); insert into IGIS_LOCATION_COPY (devicecode, type, longitude, latitude, datetime) values ('012963007793321', 'man', 121.12, 31.12, to_date('26-04-2017 14:29:05', 'dd-mm-yyyy hh24:mi:ss')); insert into IGIS_LOCATION_COPY (devicecode, type, longitude, latitude, datetime) values ('013437006991011', 'man', 121.12, 31.12, to_date('26-04-2017 14:29:05', 'dd-mm-yyyy hh24:mi:ss')); insert into IGIS_LOCATION_COPY (devicecode, type, longitude, latitude, datetime) values ('013789000795180', 'man', 121.12, 31.12, to_date('26-04-2017 14:29:05', 'dd-mm-yyyy hh24:mi:ss')); insert into IGIS_LOCATION_COPY (devicecode, type, longitude, latitude, datetime) values ('014583569411', 'car', 121.12, 31.12, to_date('26-04-2017 14:29:05', 'dd-mm-yyyy hh24:mi:ss')); insert into IGIS_LOCATION_COPY (devicecode, type, longitude, latitude, datetime) values ('049955', 'man', 121.12, 31.12, to_date('26-04-2017 14:29:05', 'dd-mm-yyyy hh24:mi:ss')); insert into IGIS_LOCATION_COPY (devicecode, type, longitude, latitude, datetime) values ('050846', 'man', 121.12, 31.12, to_date('26-04-2017 14:29:05', 'dd-mm-yyyy hh24:mi:ss')); insert into IGIS_LOCATION_COPY (devicecode, type, longitude, latitude, datetime) values ('050853', 'man', 121.12, 31.12, to_date('26-04-2017 14:29:05', 'dd-mm-yyyy hh24:mi:ss')); insert into IGIS_LOCATION_COPY (devicecode, type, longitude, latitude, datetime) values ('050859', 'man', 121.12, 31.12, to_date('26-04-2017 14:29:05', 'dd-mm-yyyy hh24:mi:ss')); commit; prompt 10 records loaded prompt Enabling triggers for IGIS_LOCATION_COPY... alter table IGIS_LOCATION_COPY enable all triggers; set feedback on set define on prompt Done.
4、匯入整張表
單擊 “工具”--“匯入表”
SQL*Plus就是上一篇博文中介紹的下載了sqlplus,如果安裝的時候沒下載,參考上篇
http://www.cnblogs.com/lelehellow/p/6801800.html
5、匯出表結構
單擊 “工具”--“匯出使用者物件”
記得選中表
使用上一步中的“匯入表”方法來匯入這個.sql檔案可以匯入一張空表,表結構還是跟這張表一樣的。
開啟匯出的使用者物件 .sql檔案,發現其實就是匯出了建立表的sql語句。
---------------------------------------------------- -- Export file for user SYSTEM -- -- Created by Administrator on 2017-5-3, 13:09:02 -- ---------------------------------------------------- set define off spool guanxi.log prompt prompt Creating table IGIS_LOCATION_COPY prompt ================================= prompt create table SYSTEM.IGIS_LOCATION_COPY ( devicecode VARCHAR2(50) not null, type VARCHAR2(10) not null, longitude NUMBER(10,2) not null, latitude NUMBER(10,2) not null, datetime DATE not null ) tablespace SYSTEM pctfree 10 pctused 40 initrans 1 maxtrans 255 storage ( initial 64K next 1M minextents 1 maxextents unlimited );
spool off
6、使用“匯入表”功能來匯入第二步中匯出的前5行資料
使用“匯入表”功能來匯入第二步中匯出的前5行資料(.sql檔案),發現匯入無效。而第三步和第五步中同樣是.sql檔案,使用“匯入表”功能都可以匯入。
對邊上面的.sql檔案發現,其原因在於第二步中匯出的.sql檔案中沒有定義表結構,也就是沒有建立表。將其中的insert語句複製到第五步中的表結構sql檔案中,就可以實現匯入表了。
這樣匯入的表也就是隻有原表中前5行資料的表了。
處理後的.sql檔案如下:
---------------------------------------------------- -- Export file for user SYSTEM -- -- Created by Administrator on 2017-5-3, 13:09:02 -- ---------------------------------------------------- set define off spool guanxi.log prompt prompt Creating table IGIS_LOCATION_COPY prompt ================================= prompt create table SYSTEM.IGIS_LOCATION_COPY ( devicecode VARCHAR2(50) not null, type VARCHAR2(10) not null, longitude NUMBER(10,2) not null, latitude NUMBER(10,2) not null, datetime DATE not null ) tablespace SYSTEM pctfree 10 pctused 40 initrans 1 maxtrans 255 storage ( initial 64K next 1M minextents 1 maxextents unlimited ); insert into IGIS_LOCATION_COPY (DEVICECODE, TYPE, LONGITUDE, LATITUDE, DATETIME) values ('001FF92FABE165', 'man', 121.12, 31.12, to_date('26-04-2017 14:29:05', 'dd-mm-yyyy hh24:mi:ss')); insert into IGIS_LOCATION_COPY (DEVICECODE, TYPE, LONGITUDE, LATITUDE, DATETIME) values ('004999010640000', 'man', 121.12, 31.12, to_date('26-04-2017 14:29:05', 'dd-mm-yyyy hh24:mi:ss')); insert into IGIS_LOCATION_COPY (DEVICECODE, TYPE, LONGITUDE, LATITUDE, DATETIME) values ('012963007793321', 'man', 121.12, 31.12, to_date('26-04-2017 14:29:05', 'dd-mm-yyyy hh24:mi:ss')); insert into IGIS_LOCATION_COPY (DEVICECODE, TYPE, LONGITUDE, LATITUDE, DATETIME) values ('013437006991011', 'man', 121.12, 31.12, to_date('26-04-2017 14:29:05', 'dd-mm-yyyy hh24:mi:ss')); insert into IGIS_LOCATION_COPY (DEVICECODE, TYPE, LONGITUDE, LATITUDE, DATETIME) values ('013789000795180', 'man', 121.12, 31.12, to_date('26-04-2017 14:29:05', 'dd-mm-yyyy hh24:mi:ss')); spool off
7、注意:假如發現自己使用plsql匯出的表無法匯入,極可能是因為在匯出表的時候沒有選上“建立表”這一項。上一步中的介紹可猜測,在匯出前5行資料的時候,預設的沒有建立表。