1. 程式人生 > >plsql基本操作 複製表 匯出表 匯出表結構 及其匯入

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行資料的時候,預設的沒有建立表。