新聞中心
在當(dāng)今的信息化時(shí)代,數(shù)據(jù)庫(kù)成為了企業(yè)信息管理的重要工具。無(wú)論是財(cái)務(wù)、物流、采購(gòu)還是生產(chǎn)等大量業(yè)務(wù)數(shù)據(jù),都可以通過(guò)數(shù)據(jù)庫(kù)進(jìn)行存儲(chǔ)和管理。而將數(shù)據(jù)導(dǎo)入數(shù)據(jù)庫(kù)則顯得尤為關(guān)鍵和重要。其中,SQLldr技能是數(shù)據(jù)庫(kù)導(dǎo)入的一種有效方式。本文將針對(duì)SQLldr技能進(jìn)行深入解析,教你如何順利導(dǎo)入數(shù)據(jù)庫(kù)。

成都創(chuàng)新互聯(lián)主營(yíng)岳陽(yáng)樓網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營(yíng)網(wǎng)站建設(shè)方案,成都App定制開(kāi)發(fā),岳陽(yáng)樓h5微信小程序開(kāi)發(fā)搭建,岳陽(yáng)樓網(wǎng)站營(yíng)銷(xiāo)推廣歡迎岳陽(yáng)樓等地區(qū)企業(yè)咨詢(xún)
SQLldr技能概述
SQLldr是一種可執(zhí)行程序,可在終端執(zhí)行,也可通過(guò)調(diào)用程序完成對(duì)數(shù)據(jù)庫(kù)的數(shù)據(jù)導(dǎo)入。SQLldr具有以下優(yōu)點(diǎn):
1. 數(shù)據(jù)導(dǎo)入速度快:SQLldr能夠全面利用計(jì)算機(jī)資源,對(duì)大量數(shù)據(jù)進(jìn)行導(dǎo)入,且速度快。
2. 易于操作:SQLldr具有簡(jiǎn)單、易于操作的特點(diǎn),不需要編寫(xiě)繁瑣的代碼,只需編寫(xiě)控制文件即可。
3. 數(shù)據(jù)導(dǎo)入精度高:SQLldr可進(jìn)行數(shù)據(jù)驗(yàn)證并支持錯(cuò)誤信息收集,保證數(shù)據(jù)導(dǎo)入的精度。
4. 不占用數(shù)據(jù)庫(kù)資源:SQLldr的執(zhí)行過(guò)程不會(huì)占用數(shù)據(jù)庫(kù)的資源,保證數(shù)據(jù)庫(kù)正常運(yùn)轉(zhuǎn)。
SQLldr實(shí)現(xiàn)數(shù)據(jù)導(dǎo)入,需要掌握以下幾個(gè)關(guān)鍵點(diǎn):
– 導(dǎo)入數(shù)據(jù)格式:一般為.csv、.txt、.xls等格式。
– 編寫(xiě)控制文件:控制文件(.ctl)用于指示SQLldr如何處理數(shù)據(jù),其中需要包含讀取文件路徑、表字段數(shù)目、數(shù)據(jù)格式、數(shù)據(jù)類(lèi)型等信息。
– 數(shù)據(jù)驗(yàn)證:SQLldr可對(duì)數(shù)據(jù)進(jìn)行驗(yàn)證,確保數(shù)據(jù)準(zhǔn)確無(wú)誤。
– 大規(guī)模數(shù)據(jù)導(dǎo)入:SQLldr通過(guò)調(diào)用數(shù)組讀取數(shù)據(jù),對(duì)大量數(shù)據(jù)進(jìn)行導(dǎo)入,增加導(dǎo)入速度。
SQLldr使用方法
一、編寫(xiě)控制文件
編寫(xiě)控制文件是SQLldr技能的核心??刂莆募邪俗x取文件路徑、目標(biāo)表名、字段數(shù)目、數(shù)據(jù)格式、數(shù)據(jù)類(lèi)型等信息。以讀取.csv格式文件為例,以下是一個(gè)簡(jiǎn)單的控制文件模板:
“`
LOAD DATA
INFILE ‘data.csv’
BADFILE ‘data.bad’
DISCARDFILE ‘data.dis’
INTO TABLE table_name
FIELDS TERMINATED BY ‘,’
(optionally enclosed by ‘\”‘)
TRLING NULLCOLS
(column1, character(100),
column2, date “yyyymmdd”,
column3, integer)
“`
其中,控制文件中的各項(xiàng)參數(shù)說(shuō)明如下:
1. INFILE: 需要讀取數(shù)據(jù)的文件路徑,相對(duì)路徑或絕對(duì)路徑均可。
2. BADFILE: 讀取錯(cuò)誤的數(shù)據(jù)存放路徑。
3. DISCARD: 被丟棄的記錄存放路徑。
4. INTO TABLE: 要導(dǎo)入的目標(biāo)表。
5. FIELDS TERMINATED BY: 數(shù)據(jù)分隔符。
6. (optionally enclosed by ‘\”‘): 如果數(shù)據(jù)里有文字字段,則需要加上”符號(hào)。
7. TRLING NULLCOLS: 表示缺省字段為空。
8. 最后仍然需要書(shū)寫(xiě)表的字段信息,格式是(column1, character(100),column2, date “yyyymmdd”,column3, integer)
二、執(zhí)行SQLldr命令
在終端中,執(zhí)行以下命令即可完成數(shù)據(jù)導(dǎo)入:
“`
sqlldr userid=/@ control= log=
“`
其中,各個(gè)參數(shù)的含義如下:
1. 客戶(hù)提供的數(shù)據(jù)庫(kù)賬戶(hù)
2. 配置文件路徑
3. 日志文件路徑,
通過(guò)上述命令執(zhí)行,即可完成數(shù)據(jù)導(dǎo)入操作。
SQLldr技能的優(yōu)化
盡管SQLldr技能非常簡(jiǎn)單,但也需要在實(shí)際操作中進(jìn)行優(yōu)化,以提升數(shù)據(jù)導(dǎo)入效率和精度。我們提供以下優(yōu)化運(yùn)用介紹:
1. 控制文件格式:對(duì)于讀取類(lèi)似.csv格式數(shù)據(jù)的文件,可以指定文件讀取方式,即”fixed”或”different_size”,以免頻繁讀取文件大小,減少讀取時(shí)間,提高導(dǎo)入速度。
2. 數(shù)據(jù)導(dǎo)入順序:為了減小數(shù)據(jù)導(dǎo)入的時(shí)間和 IO 負(fù)載,可以將負(fù)載較高的字段放在一個(gè)塊中進(jìn)行導(dǎo)入,且應(yīng)盡量避免 SQLLdr 對(duì)相同的塊中字段進(jìn)行重復(fù)讀寫(xiě)。
3. 導(dǎo)入數(shù)據(jù)分塊:對(duì)于大規(guī)模數(shù)據(jù)導(dǎo)入,SQLldr可以對(duì)數(shù)據(jù)進(jìn)行分片處理,降低單塊數(shù)據(jù)導(dǎo)入壓力和無(wú)序性,保證數(shù)據(jù)導(dǎo)入流程的高效性和穩(wěn)定性。
成都網(wǎng)站建設(shè)公司-創(chuàng)新互聯(lián),建站經(jīng)驗(yàn)豐富以策略為先導(dǎo)10多年以來(lái)專(zhuān)注數(shù)字化網(wǎng)站建設(shè),提供企業(yè)網(wǎng)站建設(shè),高端網(wǎng)站設(shè)計(jì),響應(yīng)式網(wǎng)站制作,設(shè)計(jì)師量身打造品牌風(fēng)格,熱線(xiàn):028-86922220sqlldr導(dǎo)入數(shù)據(jù)的問(wèn)題??刹豢梢钥缇钟蚓W(wǎng)呢?
本地和遠(yuǎn)程都能用sqlldr的
本地的打開(kāi)CMD , 輸入
sqlldr userid=user/password@數(shù)據(jù)庫(kù)名 control=路徑/etl.ctl direct=true
就可以導(dǎo)入了~
下晌毀面是etl.ctl文件
load data infile ‘路徑/文件名’
truncate into table 表名 –truncate是把拆耐原有的數(shù)據(jù)清空,再裝載
FIELDS TERMINATED BY ‘|’ — | 為分隔符
trailing nullcols對(duì)應(yīng)的字段名
(
aid ,
b,
c
)
注,建立CTL時(shí),把上面旅謹(jǐn)春的中文注釋去掉~(yú)
如何使用sqlloader導(dǎo)入xml文件到Oracle數(shù)據(jù)庫(kù)
在Oracle表數(shù)據(jù)和xml文件間相互導(dǎo)入導(dǎo)出的PL/SQL 過(guò)程
學(xué)校里要求做個(gè)題,題目要求是寫(xiě)出將已知格式xml文件中的數(shù)據(jù)導(dǎo)入Oracle數(shù)據(jù)庫(kù)、把數(shù)據(jù)庫(kù)中的數(shù)據(jù)導(dǎo)出成xml文件的過(guò)程。
已知格式xml文件如下:
Tony Blair
Downing Street, London, UK
(061) 98765(061) 98768
Bill Clinton
White House, USA
(001)(001)
Tom Cruise
Jumbo Street, New York, USA
(001)(001)
Linda Goodman
Crax Lane, London, UK
(061)(061)
于是寫(xiě)出過(guò)程如下:
–建表
CREATE TABLE PEOPLE
(
PERSONID VARCHAR2(10) PRIMARY KEY,
NAME VARCHAR2(20),
ADDRESS VARCHAR2(60),
TEL VARCHAR2(20),
FAX VARCHAR2(20),
EMAIL VARCHAR2(40)
);
–從xml文件載入數(shù)據(jù)保存到數(shù)據(jù)庫(kù)的過(guò)程
create or replace procedure xml2db(xmlfile varchar2) as
p xmlparser.Parser;
doc xmldom.DOMDocument;
n xmldom.DOMNode;
nl xmldom.DOMNodeList;
len number;
–根據(jù)PERSON結(jié)點(diǎn)生成插入SQL語(yǔ)句的過(guò)程
function insertsql(node xmldom.DOMNode) return varchar2
is
n xmldom.DOMNode;
nl xmldom.DOMNodeList;
len number;
nnm xmldom.DOMNamedNodeMap;
isql varchar2(200);
begin
–取得PERSON結(jié)點(diǎn)所有屬性
nnm := xmldom.getAttributes(node);
isql := ‘insert into people values(‘;
敏野核 isql := isql || ””;
–取得所有屬性中的之一個(gè)屬性,即”P(pán)ERSONID”,并拼接到SQL語(yǔ)句中
isql := isql || xmldom.getNodeValue(xmldom.item(nnm,0));
isql := isql || ””;
–取得PERSON結(jié)點(diǎn)下的所有結(jié)點(diǎn),準(zhǔn)備遍歷
nl := xmldom.getChildNodes(node);
len := xmldom.getLength(nl);
for 脊猛i in 0..len-1 loop
取出第i個(gè)結(jié)點(diǎn)
n := xmldom.item(nl,i);
isql := isql || ‘,’;
isql := isql || 橋掘””;
將結(jié)點(diǎn)的文本值取出并拼接到SQL語(yǔ)句中
isql := isql || xmldom.getNodeValue(xmldom.getFirstChild(n));
isql := isql || ””;
end loop;
isql := isql || ‘)’;
return isql;
end insertsql;
begin
p := xmlparser.newParser;
xmlparser.parse(p,xmlfile);
–轉(zhuǎn)換xml文件成DOM對(duì)像
doc := xmlparser.getDocument(p);
xmlparser.freeParser(p);
–取出所有PERSON元素
nl := xmldom.getElementsByTagName(doc,’PERSON’);
len := xmldom.getLength(nl);
–清空people表的內(nèi)容
delete from people;
for i in 0..len-1 loop
–取出第i個(gè)PERSON元素
n := xmldom.item(nl,i);
–執(zhí)行插入該P(yáng)ERSON元素所用的SQL語(yǔ)句
execute immediate insertsql(n);
end loop;
commit;
xmldom.freeDocument(doc);
end xml2db;
/
–將數(shù)據(jù)庫(kù)中的數(shù)據(jù)導(dǎo)出成xml文件的過(guò)程
create or replace procedure db2xml(xmlfile varchar2) as
doc xmldom.DOMDocument;
ret xmldom.DOMNode;
peoplenode xmldom.DOMNode;
–遍歷整個(gè)people表的游標(biāo)
–將people表中一行記錄轉(zhuǎn)換為元素
–并插入到DOM文檔對(duì)像根結(jié)點(diǎn)PEOPLE下的過(guò)程
procedure addperson(doc xmldom.DOMDocument,people xmldom.DOMNode,
v_pid varchar2,v_name varchar2,v_addr varchar2,
v_tel varchar2,v_fax varchar2,v_email varchar2)
is
personelem xmldom.DOMElement;
personnode xmldom.DOMNode;
itemelem xmldom.DOMElement;
itemnode xmldom.DOMNode;
text xmldom.DOMText;
begin
–創(chuàng)建PERSON結(jié)點(diǎn)
personelem := xmldom.createElement(doc,’PERSON’);
–設(shè)置PERSONID屬性
xmldom.setAttribute(personelem,’PERSONID’,v_pid);
personnode := xmldom.appendChild(peoplenode,xmldom.makeNode(personelem));
–向PERSON結(jié)點(diǎn)中添加NAME元素
itemelem := xmldom.createElement(doc,’NAME’);
將NAME結(jié)點(diǎn)添加到PERSON結(jié)點(diǎn)中
itemnode := xmldom.appendChild(personnode,xmldom.makeNode(itemelem));
創(chuàng)建文本結(jié)點(diǎn)
text := xmldom.createTextNode(doc,v_name);
將文本結(jié)點(diǎn)添加到NAME結(jié)點(diǎn)下,以構(gòu)成完整NAME元素
itemnode := xmldom.appendChild(itemnode,xmldom.makeNode(text));
–向PERSON結(jié)點(diǎn)中添加ADDRESS元素
itemelem := xmldom.createElement(doc,’ADDRESS’);
itemnode := xmldom.appendChild(personnode,xmldom.makeNode(itemelem));
text := xmldom.createTextNode(doc,v_addr);
itemnode := xmldom.appendChild(itemnode,xmldom.makeNode(text));
–向PERSON結(jié)點(diǎn)中添加TEL元素
itemelem := xmldom.createElement(doc,’TEL’);
itemnode := xmldom.appendChild(personnode,xmldom.makeNode(itemelem));
text := xmldom.createTextNode(doc,v_tel);
itemnode := xmldom.appendChild(itemnode,xmldom.makeNode(text));
–向PERSON結(jié)點(diǎn)中添加FAX元素
itemelem := xmldom.createElement(doc,’FAX’);
itemnode := xmldom.appendChild(personnode,xmldom.makeNode(itemelem));
text := xmldom.createTextNode(doc,v_fax);
itemnode := xmldom.appendChild(itemnode,xmldom.makeNode(text));
–向PERSON結(jié)點(diǎn)中添加EMAIL元素
itemelem := xmldom.createElement(doc,’EMAIL’);
itemnode := xmldom.appendChild(personnode,xmldom.makeNode(itemelem));
text := xmldom.createTextNode(doc,v_email);
itemnode := xmldom.appendChild(itemnode,xmldom.makeNode(text));
end addperson;
begin
–創(chuàng)建一個(gè)新DOM文檔對(duì)像
doc := xmldom.newDOMDocument;
–為文檔添加根結(jié)點(diǎn)PEOPLE
peoplenode := xmldom.makeNode(xmldom.createElement(doc,’PEOPLE’));
ret := xmldom.appendChild(xmldom.makeNode(doc),peoplenode);
–使用游標(biāo)遍歷people中的每行,生成每一行對(duì)應(yīng)的PERSON元素并添加到PEOPLE根結(jié)點(diǎn)中
for v_row in cur_people loop
addperson(doc,peoplenode,v_row.personid,v_row.name,
v_row.address,v_row.tel,v_row.fax,v_row.email);
end loop;
–將結(jié)果寫(xiě)入指定文件
xmldom.writeToFile(doc,xmlfile);
xmldom.freeDocument(doc);
end db2xml;
關(guān)于客戶(hù)sqlldr導(dǎo)入數(shù)據(jù)庫(kù)的介紹到此就結(jié)束了,不知道你從中找到你需要的信息了嗎 ?如果你還想了解更多這方面的信息,記得收藏關(guān)注本站。
成都網(wǎng)站建設(shè)選創(chuàng)新互聯(lián)(?:028-86922220),專(zhuān)業(yè)從事成都網(wǎng)站制作設(shè)計(jì),高端小程序APP定制開(kāi)發(fā),成都網(wǎng)絡(luò)營(yíng)銷(xiāo)推廣等一站式服務(wù)。
分享名稱(chēng):SQLldr技能必備!教你客戶(hù)如何順利導(dǎo)入數(shù)據(jù)庫(kù)(客戶(hù)sqlldr導(dǎo)入數(shù)據(jù)庫(kù))
當(dāng)前網(wǎng)址:http://fisionsoft.com.cn/article/dpscgjd.html


咨詢(xún)
建站咨詢(xún)
