如何在vertica sql中生成1000万个随机字母数字记录?

时间:2018-09-19 07:04:08

标签: java python sql shell vertica

我需要在vertica数据库表中生成1亿个随机字母数字12个字符记录,或者以其他任何方式生成1亿个随机字母数字12个字符记录文件。然后,我可以将文件加载到数据库中。 下面是示例记录

例如:BAN1334HNAD1

 GEN1235NDA12   

2 个答案:

答案 0 :(得分:1)

我没有要测试的Vertica实例,但这应该可以给您一个想法:

with t (l) as (
  select 'A' union all select 'B' union all select 'C' union all 
  select '1' union all select '2' union all select '3'
)
select t1.l || t2.l || t3.l 
from t t1, t t2, t t3 
order by random() 
limit 10

答案 1 :(得分:1)

这将满足您的需求:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
    int ii,jj;
    char list[]="ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
    int len=strlen(list);
    char retStr[14]={0};
    for(ii=0; ii<100*1000*1000; ii++) {
        memset(retStr,0,sizeof(retStr));
        for(jj=0; jj<12; jj++) {
            int sub=random()%len;
            retStr[jj]=list[sub];
        }
        printf("%s\n", retStr);
    }
}

我将此编译为rand12程序并创建了rand12表:

create table rand12 (a varchar2(12));

然后使用以下命令运行数据:

./rand12 |
~/opt/vertica/bin/vsql -c  "copy rand12 (a) from local stdin
delimiter '|' abort on error commit;"

这可以很容易地用Java或Python实现。