不是十分明白你的意思,你是說寫個(gè)C/C++程序來實(shí)現(xiàn)么?那將非常容易
創(chuàng)新互聯(lián)建站-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價(jià)比青秀網(wǎng)站開發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫,直接使用。一站式青秀網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋青秀地區(qū)。費(fèi)用合理售后完善,10多年實(shí)體公司更值得信賴。
1:創(chuàng)建個(gè)表,例如 number??梢栽趏racle里創(chuàng)建也可以用接口創(chuàng)建。
這是在oracle里創(chuàng)建create table number(NO number,... ...);這個(gè)參數(shù)我就不具體說了啊。
2:寫程序。c語言用OCI,c++用occi。我用的occi
#include iostream
#define LINUXOCCI //避免函數(shù)重定義錯誤
#include occi.h
using namespace std;
using namespace oracle::occi;
int main()
{
//創(chuàng)建環(huán)境變量
//Environment
Environment *env = Environment::createEnvironment(Environment::OBJECT);
//username是oracle的用戶名
//userpass是oracle的密碼
//connstr是oracle的連接字符串
string username = "atc";
string userpass = "atc";
string connstr = "192.168.1.101:1521/utms";
//創(chuàng)建連接
//connection
Connection *conn = env-createConnection(username, userpass, connstr);
if(conn == NULL)
{
cout "access oracle failed..." endl;
return 0;
}
int count =0;
whlie(1)
{
//創(chuàng)建一個(gè)SQL語句的執(zhí)行對象
//statement
Statement *st = conn-createStatement();
st-setSQL("insert into number values(count)");
st-executeUpdate();
n++;
if(n == 60)
break;
}
//關(guān)閉連接
env-terminateConnection(conn);
Environment::terminateEnvironment(env);
return 0;
}
理論上上面的代碼就能實(shí)現(xiàn)你想要的,不過我當(dāng)時(shí)寫的是實(shí)現(xiàn)一個(gè)插入代碼,我修改的沒測試,你試試看,不行的話我還有批量操作的代碼。你在站短我咱們在研究
1.打開excel第一行,
2,第一列輸入X001
第二列 輸入 varchar2(30);
3.拖動復(fù)制299行(注意不變或者變化Ctrl鍵或者Shift鍵的配合)
4 另存為CSV格式。
5.記事本 打開,替換逗號為空格,替換分號為逗號,添加首尾的'alter table A add () 大功告成。
alter table A add(
X001 varchar2(30),
X002 varchar2(30),
...
X300 varchar2(30)
);
使用loop循環(huán),比如:
for item in (select a,b,c from table_a where 條件) loop
insert into table_b(a,b,c) values (item.a,item.b,item.c);
end loop;
也可以使用索引表循環(huán),以上只是一個(gè)簡單的例子,需要根據(jù)你的具體情況選擇循環(huán)方式。
1、采用insert into values 語句插入一條,寫很多條語句即可多條數(shù)據(jù),這種主要針對于離散值以及一些基礎(chǔ)信息的錄入,如:insert into test(xh,mc) values('123','測試');
如果插入的數(shù)據(jù)有規(guī)律,可利用for、loop循環(huán)插入,主要用于批量生成測試數(shù)據(jù)
begin
for i in 1 .. 100 loop
insert into test(xh,mc) values(i||'','測試');
end loop;
end ;。
2、采用insert into selct from 語句來一次性插入一個(gè)集合,這種主要依據(jù)于要插入的數(shù)據(jù)源已經(jīng)存儲于數(shù)據(jù)庫對象中,或者利用dual虛表來構(gòu)造數(shù)據(jù),經(jīng)過加工后寫入一個(gè)集合。
insert into test (xh,mx) select '123','測試' from dual;
3、采用plsql等工具、或者oracle的imp、impdp命令來導(dǎo)入,這種主要用數(shù)據(jù)庫與數(shù)據(jù)庫之間的大批量數(shù)據(jù)導(dǎo)入,導(dǎo)入的數(shù)據(jù)格式為plsql的pde、oracle的dmp等。dmp文件可使用
table_exists_action參數(shù)控制導(dǎo)入動作:replace替換原表,truncate清除原表數(shù)據(jù)再導(dǎo)入,append增量導(dǎo)入數(shù)據(jù),當(dāng)然impdp數(shù)據(jù)泵的導(dǎo)入要依賴于directory路徑。
impdp 用戶名/密碼 dumpfile=123.dmp logfile=123.log directory=imp_dir tables=test table_exists_action=append。
4、使用excel文件直接拷貝。這種主要用于要寫入的數(shù)據(jù)已是excel文件或者行列分明的其它格式文件,每一列的值和表結(jié)構(gòu)相對應(yīng),可直接打開表的行級鎖,把數(shù)據(jù)拷貝進(jìn)入。
insert into 新表表名 select * from 原表表名;
這樣寫試一下,看看是否好用。
INSERT INTO table
SELECT 'aaa' || ROWNUM, 'aaa' FROM DUAL CONNECT BY ROWNUM = 100
其中 100是你想插入的記錄條數(shù)
這樣使用的:
for
xx
in
(select
語句)
這是隱式游標(biāo),這個(gè)結(jié)構(gòu)中不能帶參數(shù),或者說普通的游標(biāo),隱式或顯式的都不能帶參數(shù),使用參數(shù)游標(biāo)或引用(動態(tài))游標(biāo)。
例如:
declare
cursor cur(C_value number) is select col_A,col_B from tableA where col_C=C_value
;
begin
for xx in cur loop
--處理
end loop;
end
擴(kuò)展資料:
注意事項(xiàng)
使用for循環(huán)實(shí)現(xiàn)
declare
cursor
cur
is
select
*
from
tablename;
aw_row
tablename%rowtype;
begin
for
raw_row
in
cur
loop
dbms_output.put_line('test');
end
loop;
end;
for語句直接幫做了游標(biāo)的打開關(guān)閉,以及判斷工作,所以比較常用。