在PostgreSQL中插入随机数据,但有选择

在PostgreSQL中插入随机数据,但有选择,postgresql,Postgresql,所以我要为3k列插入一个数据,但我希望它们有随机插入集。 例如: “ATMOUTOFSERVICE”、“ATMBEINGSERVICE”、“NETWORKCONNECTIONLOST”、“BLACKSCREEN” 是否有任何可能的方法可以将它们随机插入到我的列中,但仅限于这些选项?您可以使用以下方法: insert into target_table (some_column) select case (random() * 3 + 1)::int when 1 then '

所以我要为3k列插入一个数据,但我希望它们有随机插入集。 例如:

“ATMOUTOFSERVICE”、“ATMBEINGSERVICE”、“NETWORKCONNECTIONLOST”、“BLACKSCREEN”


是否有任何可能的方法可以将它们随机插入到我的列中,但仅限于这些选项?

您可以使用以下方法:

insert into target_table (some_column)
select case (random() * 3 + 1)::int
          when 1 then 'ATMOUTOFSERVICE'
          when 2 then 'ATMBEINGSERVICE'
          when 3 then 'NETWORKCONNECTIONLOST'
          when 'BLACKSCREEN'
       end
from generate_series(1,...);
或者使用数组:

insert into target_table (some_column)
select (array['ATMOUTOFSERVICE',
              'ATMBEINGSERVICE',
              'NETWORKCONNECTIONLOST',
              'BLACKSCREEN'])[(random() * 3 + 1)::int]
from generate_series(1, ...);

您可以使用以下内容:

insert into target_table (some_column)
select case (random() * 3 + 1)::int
          when 1 then 'ATMOUTOFSERVICE'
          when 2 then 'ATMBEINGSERVICE'
          when 3 then 'NETWORKCONNECTIONLOST'
          when 'BLACKSCREEN'
       end
from generate_series(1,...);
或者使用数组:

insert into target_table (some_column)
select (array['ATMOUTOFSERVICE',
              'ATMBEINGSERVICE',
              'NETWORKCONNECTIONLOST',
              'BLACKSCREEN'])[(random() * 3 + 1)::int]
from generate_series(1, ...);

不能有包含3000列的表。你是说3000行吗?一定是纯Postgres解决方案吗?如果没有,您可以编写一个简短的Python、Java等程序来创建和执行INSERT语句。你是说3000行吗?一定是纯Postgres解决方案吗?如果没有,您可以编写一个简短的Python、Java等程序来创建和执行INSERT语句。我可以在更新查询中使用它吗?更新仪表板。事件集事件描述=选择数组['CAM停止服务','CAM正在服务','网络连接丢失','黑屏','BNA设备错误'][random*3+2::int]来自generate_series1,5;我一直在使用这段代码,但它不会更新空值。设置并生成_series:SET event_description=array['ATMOUTOFSERVICE','ATMBEINGSERVICE','NETWORKCONNECTIONLOST','BLACKSCREEN'][random*3+1::int]我可以在更新查询中使用此选项吗?更新dashboard.event SET event_description=选择数组['CAM停止服务','CAM正在服务','网络连接丢失','黑屏','BNA设备错误][random*3+2::int]从generate_series1,5;我一直在使用这段代码,但它不会更新空值SET rid of the select and generate_series:SET event_description=array['ATMOUTOFSERVICE','ATMBEINGSERVICE','NETWORKCONNECTIONLOST','BLACKSCREEN'][random*3+1::int]