我有一个包含两个字段的表:
var255
)我想用SQL语句插入随机数据。 我希望这种描述是随机的。
PS:我正在使用PostgreSQL。
答案 0 :(得分:61)
我不确切地知道这是否符合“随机描述”的要求,并且不清楚是否要生成完整数据:但是,例如,这会生成10条带有连续ID和随机文本的记录:
test=# SELECT generate_series(1,10) AS id, md5(random()::text) AS descr;
id | descr
----+----------------------------------
1 | 65c141ee1fdeb269d2e393cb1d3e1c09
2 | 269638b9061149e9228d1b2718cb035e
3 | 020bce01ba6a6623702c4da1bc6d556e
4 | 18fad4813efe3dcdb388d7d8c4b6d3b4
5 | a7859b3bcf7ff11f921ceef58dc1e5b5
6 | 63691d4a20f7f23843503349c32aa08c
7 | ca317278d40f2f3ac81224f6996d1c57
8 | bb4a284e1c53775a02ebd6ec91bbb847
9 | b444b5ea7966cd76174a618ec0bb9901
10 | 800495c53976f60641fb4d486be61dc6
(10 rows)
答案 1 :(得分:23)
以下对我有用:
create table t_random as select s, md5(random()::text) from generate_Series(1,5) s;
答案 2 :(得分:12)
这是使用最新功能的更优雅方式。我将使用Unix字典(/ usr / share / dict / words)并将其复制到我的PostgreSQL数据中:
x[0].text = '';
x[1].text = '';
x[2].text = '';
x[3].text = 'Test';
然后,您可以轻松创建大量无意义的描述,但可以使用字典单词进行搜索,并执行以下步骤:
1)创建表格和功能。 getNArrayS获取数组中的所有元素,并且需要多次连接。
cp /usr/share/dict/words data/pg95/words.list
完成所有操作后,使用CTE运行插入:
CREATE TABLE randomTable(id serial PRIMARY KEY, description text);
CREATE OR REPLACE FUNCTION getNArrayS(el text[], count int) RETURNS text AS $$
SELECT string_agg(el[random()*(array_length(el,1)-1)+1], ' ') FROM generate_series(1,count) g(i)
$$
VOLATILE
LANGUAGE SQL;
现在,像往常一样选择:
WITH t(ray) AS(
SELECT (string_to_array(pg_read_file('words.list')::text,E'\n'))
)
INSERT INTO randomTable(description)
SELECT getNArrayS(T.ray, 3) FROM T, generate_series(1,10000);
答案 3 :(得分:1)
我假设发送==声明?你可以使用perl或plperl作为perl有一些好的随机数据生成器。查看perl CPAN模块Data :: Random来启动。
以下是perl脚本的示例,用于生成从CPAN获取的一些不同的随机内容。
use Data::Random qw(:all);
my @random_words = rand_words( size => 10 );
my @random_chars = rand_chars( set => 'all', min => 5, max => 8 );
my @random_set = rand_set( set => \@set, size => 5 );
my $random_enum = rand_enum( set => \@set );
my $random_date = rand_date();
my $random_time = rand_time();
my $random_datetime = rand_datetime();
open(FILE, ">rand_image.png") or die $!;
binmode(FILE);
print FILE rand_image( bgcolor => [0, 0, 0] );
close(FILE);