Automatically Generate PostgreSQL Data by ~glorifiedgluer

In order to generate PostgreSQL data you can take advantage of the generate_series function and Data-Modyfing Statements in WITH. Consider the following structure:

  CREATE TABLE Product(
      ProductID INTEGER PRIMARY KEY GENERATED ALWAYS AS IDENTITY,
      Model TEXT NOT NULL,
      Color TEXT NOT NULL
  );

  CREATE TABLE Review(
      ReviewID INTEGER PRIMARY KEY GENERATED ALWAYS AS IDENTITY,
      ProductID INTEGER NOT NULL,
      Rating INTEGER NOT NULL,
      FOREIGN KEY (ProductID) REFERENCES Product(ProductID)
  );

  CREATE TABLE UserReviewVote(
      UserReviewVoteID INTEGER PRIMARY KEY GENERATED ALWAYS AS IDENTITY,
      ReviewID INTEGER NOT NULL,
  );

You could generate the data with this:

  WITH
    insProduct AS (
        INSERT INTO Product (Model, Color)
        SELECT
            md5(random()::text),
            md5(random()::text)
        FROM generate_series(1, 1000000) s
        RETURNING ProductID
    ),
    insReview AS (
        INSERT INTO Review(ProductID, Rating)
        SELECT p.ProductID, random() * 5
        FROM insProduct p
        RETURNING ReviewID
    )
    INSERT INTO UserReviewVote (ReviewID, ReviewType)
    SELECT r.ReviewID, 'Helpful'
    FROM insReview r