PL/SQL 批量插入2000万条数据

时间:2021-07-01 23:24:35
各位大侠,小弟想给oracle 的一张表中批量插入2000万条数据,求方法。

字段如下:
         id, mac_adress

其中id 是自动加一的, mac_adress 也是自动往上加的,
例如:

       第一条记录   1, B0:EE:20:02:00:00
      第二条记录   1, B0:EE:20:02:00:01
      第三条记录   1, B0:EE:20:02:00:02

8 个解决方案

#1


create table t as
select levle id from dual connect by levle<=20000000

mac_adress 地址怎么加。。。

#2


mac_adress 加一的,遇到F,把该位变为0, 上一位,加一。

比如:B0:EE:20:02:00:00  + 1 = B0:EE:20:02:00:01

比如:B0:EE:20:02:00:F0  + 1 = B0:EE:20:02:01:00

#3


10000一次
批量插入

#4


char str[50] = "B0:CE:18:02:00:00";

IncreamentMac(str); 

int IncreamentMac(char* pcSrc, int iStep =1)
{
int iLen = 0;
if (NULL == pcSrc || 17 != (iLen = strlen(pcSrc)))
{
return -1;
}

int i = iLen - 1;
while(-1 != i)
{
if ('9' == pcSrc[i])
{
pcSrc[i] = 'a' -1;
}

if (('f' == pcSrc[i]) || (':' == pcSrc[i]))
{
if ('f' == pcSrc[i])
{
if (0 == i)
{
//break;
return -2;
}

pcSrc[i] = '0';
i--;
}
else
{
//pcSrc[i] = '0';
i--;
}

else
{
pcSrc[i]++;
break;
}
}

return 0;
}

这个是mac 地址自动增加的函数

#5


求高手???

#6



for n in 1.。 1000 loop
 insert into
 values (seq.nextval,pin_fun(to_char(n+seq.nextval,'XX') ));
end loop;

n=B0:EE:20:02:00:00换成10进制。
pin_fun就是一个函数将字符串每两位加:
如substr(aa,1,2)||';'||substr(aa,3,2)

  

#7


用Pl/sql直接导入EXCEL数据

#8


有一款在数据的工具,datafactory,可以轻松解决你的问题。
1、用datafactory连接你的数据库
2、id可以直接用序列,从1开始。 mac_adress利用字符串加数字:’B0:EE:20:02:00:‘+00(前面是字符串,后面是数字)
2000万条数据,两个字段,要不了多少时间。

#1


create table t as
select levle id from dual connect by levle<=20000000

mac_adress 地址怎么加。。。

#2


mac_adress 加一的,遇到F,把该位变为0, 上一位,加一。

比如:B0:EE:20:02:00:00  + 1 = B0:EE:20:02:00:01

比如:B0:EE:20:02:00:F0  + 1 = B0:EE:20:02:01:00

#3


10000一次
批量插入

#4


char str[50] = "B0:CE:18:02:00:00";

IncreamentMac(str); 

int IncreamentMac(char* pcSrc, int iStep =1)
{
int iLen = 0;
if (NULL == pcSrc || 17 != (iLen = strlen(pcSrc)))
{
return -1;
}

int i = iLen - 1;
while(-1 != i)
{
if ('9' == pcSrc[i])
{
pcSrc[i] = 'a' -1;
}

if (('f' == pcSrc[i]) || (':' == pcSrc[i]))
{
if ('f' == pcSrc[i])
{
if (0 == i)
{
//break;
return -2;
}

pcSrc[i] = '0';
i--;
}
else
{
//pcSrc[i] = '0';
i--;
}

else
{
pcSrc[i]++;
break;
}
}

return 0;
}

这个是mac 地址自动增加的函数

#5


求高手???

#6



for n in 1.。 1000 loop
 insert into
 values (seq.nextval,pin_fun(to_char(n+seq.nextval,'XX') ));
end loop;

n=B0:EE:20:02:00:00换成10进制。
pin_fun就是一个函数将字符串每两位加:
如substr(aa,1,2)||';'||substr(aa,3,2)

  

#7


用Pl/sql直接导入EXCEL数据

#8


有一款在数据的工具,datafactory,可以轻松解决你的问题。
1、用datafactory连接你的数据库
2、id可以直接用序列,从1开始。 mac_adress利用字符串加数字:’B0:EE:20:02:00:‘+00(前面是字符串,后面是数字)
2000万条数据,两个字段,要不了多少时间。