新聞中心
在進行數(shù)據(jù)庫導(dǎo)入和導(dǎo)出的操作過程中,我們常常會遇到空表無法導(dǎo)入數(shù)據(jù)庫的問題。這是因為在導(dǎo)入時,數(shù)據(jù)庫系統(tǒng)默認情況下是不支持導(dǎo)入空表的。因此,在進行數(shù)據(jù)庫導(dǎo)入操作時,需要注意一些小細節(jié),避免空表無法導(dǎo)入的情況發(fā)生。本文就將詳細介紹如何解決這一問題。

創(chuàng)新互聯(lián)建站是一家網(wǎng)站設(shè)計制作、成都網(wǎng)站制作,提供網(wǎng)頁設(shè)計,網(wǎng)站設(shè)計,網(wǎng)站制作,建網(wǎng)站,按需開發(fā),網(wǎng)站開發(fā)公司,2013年至今是互聯(lián)行業(yè)建設(shè)者,服務(wù)者。以提升客戶品牌價值為核心業(yè)務(wù),全程參與項目的網(wǎng)站策劃設(shè)計制作,前端開發(fā),后臺程序制作以及后期項目運營并提出專業(yè)建議和思路。
一、了解空表無法導(dǎo)入數(shù)據(jù)庫的原因
當我們把需要導(dǎo)入的表在MySQL中使用show create table tablename命令查看表結(jié)構(gòu)后,會發(fā)現(xiàn)表結(jié)構(gòu)中包含一下兩個關(guān)鍵字:
CREATE TABLE `tablename` (
…
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
其中ENGINE=InnoDB DEFAULT CHARSET=utf8mb4就是表格的默認參數(shù),而如果在導(dǎo)入時表格為空時,MySQL并不會生成INSERT語句,因此導(dǎo)入失敗。
二、解決方法
了解了空表無法導(dǎo)入數(shù)據(jù)庫的原因,接下來,我們便可以通過以下幾種方法來解決這一問題:
1.修改MySQL的默認設(shè)置參數(shù)
我們可以在MySQL的配置文件中增加一句“SET SQL_MODE=”NO_AUTO_VALUE_ON_ZERO”;”,將默認?修改為0,這樣在導(dǎo)入空白表格時,MySQL就會自動插入一條自增長ID為0的記錄,從而解決該問題。
2.使用MySQL Workbench軟件進行導(dǎo)入
MySQL Workbench是一款MySQL數(shù)據(jù)庫開發(fā)和管理工具,可以方便快捷的進行數(shù)據(jù)庫導(dǎo)入操作。在使用該軟件進行導(dǎo)入操作時,可以選擇在import options菜單中勾選“Populate options”,然后點擊continue按鈕,MySQL Workbench就會自動給表格插入一條自增長ID為0的記錄,從而解決導(dǎo)入空表格失敗的問題。
3.手動插入一條記錄
如果以上兩個方法都不行,則需要手動插入一條記錄。在導(dǎo)入空表數(shù)據(jù)時,手動向該表中插入一條數(shù)據(jù)即可。例如,在MySQL Workbench的Query窗口中,我們可以使用如下SQL語句手動插入一條數(shù)據(jù):
INSERT INTO `tablename` (`id`, `name`, `age`, `address`) VALUES (1, ‘Tom’, 22, ‘Beijing’);
其中,id字段為主鍵,可以自行指定,因為我們只是為了解決空表無法導(dǎo)入問題,所以無需特別關(guān)注。
:
數(shù)據(jù)庫導(dǎo)入操作是一個非常重要的工作,在進行這項工作時,空表無法導(dǎo)入的問題會經(jīng)常出現(xiàn)。因此,我們需要通過使用MySQL的默認設(shè)置參數(shù)、MySQL Workbench軟件進行導(dǎo)入、手動插入一條記錄等方式來解決這一問題,以保證我們的工作順利進行。
相關(guān)問題拓展閱讀:
- oracle11g導(dǎo)出數(shù)據(jù)庫時怎么設(shè)置把空表也導(dǎo)出
oracle11g導(dǎo)出數(shù)據(jù)庫時怎么設(shè)置把空表也導(dǎo)出
用PLSQL直接導(dǎo)出dmp文件
1、Oracle11g默認對空表不分備弊配segment,故使用exp導(dǎo)出Oracle11g數(shù)據(jù)庫時,空型兆表不會導(dǎo)出。
2、設(shè)置deferred_segment_creation 參數(shù)為FALSE后,無論是空表還是非空表,都分配segment。
在sqlplus中,執(zhí)行如下命令:
SQL>alter system set deferred_segment_creation=false;
查看:
SQL>show parameter deferred_segment_creation;
該值設(shè)置后只對后面新增的表產(chǎn)生作用,對之前建立的空表不起作用。
3、可以使用手工為空表分卜滾租配Extent的方式,來解決導(dǎo)出之前建立的空表的問題。說明如下:
3.1 使用ALLOCATE EXTENT的說明
使用ALLOCATE EXTENT可以為數(shù)據(jù)庫對象分配Extent。其語法如下:
ALLOCATE EXTENT { SIZE integer | DATAFILE ‘filename’ | INSTANCE integer }
可以針對數(shù)據(jù)表、索引、物化視圖等手工分配Extent。
ALLOCATE EXTENT使用樣例:
ALLOCATE EXTENT
ALLOCATE EXTENT(SIZE integer )
ALLOCATE EXTENT(DATAFILE ‘filename’)
ALLOCATE EXTENT(INSTANCE integer)
ALLOCATE EXTENT(SIZE integer DATAFILE ‘filename’)
ALLOCATE EXTENT(SIZE integer INSTANCE integer)
針對數(shù)據(jù)表操作的完整語法如下:
ALTER TABLE table_name ALLOCATE EXTENT | DATAFILE ‘filename’ | INSTANCE integer})>
故,需要構(gòu)建如下樣子簡單的SQL命令:
alter table aTabelName allocate extent
3.2 構(gòu)建對空表分配空間的SQL命令,
查詢當前用戶下的所有空表(一個用戶更好對應(yīng)一個默認表空間)。命令如下:
SQL>select table_name from user_tables where NUM_ROWS=0;
根據(jù)上述查詢,可以構(gòu)建針對空表分配空間的命令語句,如下:
SQL>Select ‘a(chǎn)lter table ‘||table_name||’ allocate extent;’ from user_tables where num_rows=0
批量輸出上述生成的SQL語句,建立C:\createsql.sql,其內(nèi)容如下:
set heading off;
set echo off;
set feedback off;
set termout on;
spool C:\allocate.sql;
Select ‘a(chǎn)lter table ‘||table_name||’ allocate extent;’ from user_tables where num_rows=0;
spool off;
執(zhí)行C:\createsql.sql,命令如下:
SQL>@ C:\createsql.sql;
執(zhí)行完畢后,得到C:\allocate.sql文件。
打開該文件會看到,已經(jīng)得到對所有空表分配空間的命令SQL語句。
3.4 執(zhí)行SQL命令,對空表分配空間:
執(zhí)行C:\allocate.sql,命令如下:
SQL>@ C:\allocate.sql;
執(zhí)行完畢,表已更改。
3.4 此時執(zhí)行exp命令,即可把包括空表在內(nèi)的所有表,正常導(dǎo)出。
另外:Oracle11g中,對密碼是大小寫敏感的,即密碼中的字母是區(qū)分大小寫的。
在Oracle10g中及以前,密碼中的字母大小寫無所謂。
1、Oracle11g默認對空表不分配segment,故使用exp導(dǎo)出Oracle11g數(shù)據(jù)庫時,空表不會導(dǎo)出。
2、設(shè)置deferred_segment_creation 參數(shù)為FALSE后,無論是空表還是非空表,都分配segment。
在sqlplus中,執(zhí)行如下命令:
SQL>alter system set deferred_segment_creation=false;
查看:
SQL>show parameter deferred_segment_creation;
該值設(shè)置后只大閉拿對后面新增的表產(chǎn)生作用,對之前建立的空表不起作用。
3、可以使用手工為空表分配Extent的方式,來解決導(dǎo)出之前建立的空表的問題。說明如下:
3.1 使用ALLOCATE EXTENT的說明
使用ALLOCATE EXTENT可以為數(shù)據(jù)庫對象分配Extent。其語法如下:
ALLOCATE EXTENT { SIZE integer | DATAFILE ‘filename’ | INSTANCE integer }
可以針對數(shù)據(jù)表、索引、物化視圖等手工分配Extent。
ALLOCATE EXTENT使用樣例:
ALLOCATE EXTENT
ALLOCATE EXTENT(SIZE integer )
ALLOCATE EXTENT(DATAFILE ‘filename’)
ALLOCATE EXTENT(INSTANCE integer)
ALLOCATE EXTENT(SIZE integer DATAFILE ‘filename’)
ALLOCATE EXTENT(SIZE integer INSTANCE integer)
針對數(shù)據(jù)表操作的完整語法如下:
ALTER TABLE table_name ALLOCATE EXTENT | DATAFILE ‘filename’ | INSTANCE integer})>
故,需要構(gòu)建如下樣子簡單的SQL命令:
alter table aTabelName allocate extent
3.2 構(gòu)建對空表分配態(tài)隱空間的SQL命令,
查詢當前用戶下的所有空表(一個用戶更好對應(yīng)一個默認表空間)。命令如下:
SQL>select table_name from user_tables where NUM_ROWS=0;
根據(jù)上述查詢,可以構(gòu)建針對空表分配空間的命令語句,如下:
SQL>Select ‘a(chǎn)lter table ‘||table_name||’ allocate extent;’ from user_tables where num_rows=0
批量輸出上述生成的SQL語句,建立C:\createsql.sql,其內(nèi)容如下:
set heading off;
set echo off;
set feedback off;
set termout on;
spool C:\allocate.sql;
Select ‘a(chǎn)lter table ‘||table_name||’ allocate extent;’ from user_tables where num_rows=0;
spool off;
執(zhí)行C:\createsql.sql,命令如下:
SQL>@ C:\createsql.sql;
執(zhí)行完畢后,得到C:\allocate.sql文件。
打開該文件會看到,已經(jīng)得到對所有空表分配空間的命令SQL語句。
3.4 執(zhí)行SQL命令,對空表分配空間:
執(zhí)行C:\allocate.sql,命令如下:
SQL>@ C:\allocate.sql;
執(zhí)行完畢,表已更改。
3.4 此時執(zhí)行exp命令,即可把包括空表在內(nèi)的滾搭所有表,正常導(dǎo)出。
另外:Oracle11g中,對密碼是大小寫敏感的,即密碼中的字母是區(qū)分大小寫的。
在Oracle10g中及以前,密碼中的字母大小寫無所謂。
1 將數(shù)據(jù)庫TEST完全導(dǎo)出,用扮兆迅戶名system 密碼猜殲manager 導(dǎo)出到D:\daochu.dmp中
exp system/manager@TEST file=d:\daochu.dmp full=y
2 將數(shù)據(jù)庫中system用戶與sys用戶的表廳此導(dǎo)出
exp system/manager@TEST file=d:\daochu.dmp owner=(system,sys)
空表無法導(dǎo)入數(shù)據(jù)庫的介紹就聊到這里吧,感謝你花時間閱讀本站內(nèi)容,更多關(guān)于空表無法導(dǎo)入數(shù)據(jù)庫,如何解決空表無法導(dǎo)入數(shù)據(jù)庫的問題?,oracle11g導(dǎo)出數(shù)據(jù)庫時怎么設(shè)置把空表也導(dǎo)出的信息別忘了在本站進行查找喔。
創(chuàng)新互聯(lián)服務(wù)器托管擁有成都T3+級標準機房資源,具備完善的安防設(shè)施、三線及BGP網(wǎng)絡(luò)接入帶寬達10T,機柜接入千兆交換機,能夠有效保證服務(wù)器托管業(yè)務(wù)安全、可靠、穩(wěn)定、高效運行;創(chuàng)新互聯(lián)專注于成都服務(wù)器托管租用十余年,得到成都等地區(qū)行業(yè)客戶的一致認可。
分享標題:如何解決空表無法導(dǎo)入數(shù)據(jù)庫的問題?(空表無法導(dǎo)入數(shù)據(jù)庫)
標題URL:http://m.5511xx.com/article/dposedc.html


咨詢
建站咨詢
