我有表模式:PostgreSQL的:如何高效填入表10個百萬行與隨機字符串
test1 (id integer primary key , padding text)
(有指數ID),我想有10個百萬行與
隨機填充(填充長度小於1024的符號)。 如何快速生成並將其插入表中?
我想現在該解決方案:
insert into test1 (select *, random_string(1024) from generate_series(0, 10000000));
其中random_string是一個函數:
create or replace function random_string(length integer) returns text as
$$
declare
chars text[] := '{0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z}';
result text := '';
i integer := 0;
length2 integer := (select trunc(random() * length + 1));
begin
if length2 < 0 then
raise exception 'Given length cannot be less than 0';
end if;
for i in 1..length2 loop
result := result || chars[1+random()*(array_length(chars, 1)-1)];
end loop;
return result;
end;
$$ language plpgsql;
看來,PostgreSQL是創建臨時表,該臨時表的只有發電將採取2小時。
你希望每一個這樣的字符串都是1024個字符嗎? – 2011-12-18 18:03:15
@Catcall:顯然不是,因爲'length2'設置爲'trunc(random()* length + 1)'。 – ruakh 2011-12-18 18:36:38
@ruakh:我讀了代碼的功能。我還讀到「填充長度小於1024的符號」,這可能意味着「填充字符串短於1024字節(或字符,不一定是相同的)到1024字節(或字符)。 – 2011-12-18 22:22:59