Subject: Creating files with testdata

From: H <[email-masked]>
Date: Mon, 10 Mar 2025 14:09:15 -0400

I am developing a complex multi-tenant application in postgresql 16 in Linux. During the development I would like to be able to enter test data into various related tables at any given time for testing purposes.

While this can certainly be accomplished by predefined CTE INSERT statements in an SQL file, I would prefer something more flexible. I am thinking of using a markdown file as a source for these CTE INSERT statements. Specifically, having a certain structure in the markdown file where a given markdown heading level, bullet level etc. would correspond to specific tables and columns.

After entering my test data into the markdown file for the given test scenario, I would then run an awk script or similar to create a SQL file with the various CTE INSERT statements. Howevever, it gets complex since I need to handle 1:N relationships between tables in the markdown file...

I hope the above outline is understandable and am interested in comments and thoughts on my above approach.

Thanks.

---

From: Francisco Olarte <[email-masked]>
Date: Mon, 10 Mar 2025 20:22:41 +0100

On Mon, 10 Mar 2025 at 19:17, H <[email-masked]> wrote:
...
> I hope the above outline is understandable and am interested in comments and thoughts on my above approach.

I do not think MD would be a good source format. Being a developer I
would recommend taking your favorite scripting language ( perl /
python / lua / js , whatever ), build a big object ( which can be
easily helped by some mini-functions to build a little DSL ) and then
spit sql from it ( for developemewnt it is normally better then using
whatever db connection your language has, as it leaves an
understandable sql script ).

I have done this with perl for some projects, built a driver which
defined several helper functions, then dofile("xx.dat") which returned
a big hash and then a series of loops on the result to write the SQL
in whatever order was neccessary.

Francisco Olarte.