emersonthis
emersonthis

Reputation: 33378

How to create a huge string in Postgresql

For testing / debugging purposes, I need to get an enormous string into a field for one of my records. Doesn't matter what the string is. Could be a million "*"s or the contents of Moby Dick.... whatever.

I'm not able to save a string so large via the app's UI because it crashes the browser. I'd like to write an SQL query to generate the massive string. Something like this:

UPDATE my_table SET text_field = <HUGE STRING CREATION> WHERE id = 42

The part I'm not sure how to do is <HUGE STRING CREATION>. I know I can concatenate strings with || but is there an SQL way to do that in a loop?

Upvotes: 2

Views: 2135

Answers (5)

coterobarros
coterobarros

Reputation: 1247

This is my family of lipsum_ plpgsql functions. They work and are easy to use.

However, to generate a huge amount of text, the concat() function or the || operator are not a good approach. Strings are treated as immutable buffers, allocating a new buffer every time a concat is performed.

You'd better use an external C program, to profit from a much higher speed approach and –most probably– from parallelizing your inserts or updates using several concurrent connections.

create or replace function lipsum_word () 
returns varchar 
language plpgsql as $$
declare
  _word constant varchar[] = '{
  "requiro", "plurimum", "praesum", "auctoritas", "pergo", "abbatis", "precis", "temptatio", "fusus", "itis", "brachants", "egretudo", "remuneror", "coerceo", "enumero", "prenda", "iterum", "redeo", "tantillus", "corturiacum", "clementia", "tergo", "res", "pollen", "saevio", "lenis", "eligo", "unus", "prout", "continuus", "locus", "fotum", "prominens", "nota", "egre", "promutuus", "ea", "plector", "ulciscor", "prohibeo", "requievi", "inflectum", "rapio", "quotiens", "queo", "eloquens", "doctum", "leodie", "boloniense", "morsus", "idem", "praecedo", "iaceo", "rhetoricus", "munio", "optimus", "sapientia", "scindo", "devenio", "vovi", "saluto", "sententia", "prorsus", "jugis", "pervalidus", "mellis", "oratio", "nonus", "infeste", "competo", "sedo", "expiscor", "quippe", "cunctator", "santiago", "suffragium", "culpa", "incipio", "quidnam", "pupugi", "distringo", "aliquantus", "parilis", "calco", "lama", "glorior", "lamnia", "amissus", "intercipio", "personam", "verto", "decipio", "civilis", "dolor", "universi", "fabula", "vulticulus", "ops", "emi", "quantumcumque", "informatio", "ager", "vestri", "defungo", "fidelis", "cursus", "levamen", "quicquid", "prolicio", "reprehendo", "audacter", "perfeci", "tremo", "pevela", "fugio", "premo", "deprehensio", "oneself", "pacis", "peracto", "cilicium", "paganus", "urbs", "uxor", "nasci", "iucundus", "contemplor", "ploratus", "copiae", "pium", "rapui", "iuxta", "cogo", "cohibeo", "estas", "luxuria", "praeteritus", "villicus", "u", "verbum", "devito", "plurimus", "balbus", "emiror", "cresco", "vultur", "quamvis", "periculum", "solitudinis", "facillimus", "eo", "tutaminis", "prestantia", "circumvenio", "re", "miro", "sepulchrum", "perturpis", "piger", "tutamen", "labellum", "irruo", "tunc", "iumentum", "pes", "call", "equidem", "nauta", "influxum", "illaturos", "lento", "monasteriense", "inferi", "ars", "increpo", "eluvies", "dissimulo", "miser", "umerus", "tergiversatio", "vulgus", "nidor", "statum", "expugno", "eximietate", "longe", "relucesco", "illo", "vado", "inflammo", "preficio", "sibimet", "latus", "opera", "averto", "nondum", "contristo", "totus", "infodi", "dignitas", "thematis", "harniis", "promise", "opprimo", "nequaquam", "traditum", "irascor", "fortitudo", "arma", "gravis", "hanc", "punctum", "adipiscor", "ruris", "acerbitas", "rememdium", "fatum", "plurimi", "certe", "laboris", "jugiter", "fulgeo", "piscator", "iaculum", "compes", "initium", "uberrime", "speedily", "felicis", "dolens", "saeta", "tactum", "astrum", "auctus", "qualiter", "lego", "vergo", "aveho", "emptio", "supra", "saturo", "vulariter", "dictito", "paro", "sepius", "paternus", "nomine", "ipsa", "adnuo", "preastolatio", "ruined", "innotui", "immineo", "carnotense", "emptum", "dutiful", "renuntio", "ritus", "temeritas", "dissolutus", "infector", "cogito", "impendium", "nefas", "maris", "concito", "sanctifico", "milia", "love", "sero", "arcis", "moti", "volpes", "dignosco", "affectionate", "maxime", "timor", "lapsus", "somnium", "maiestas", "saepe", "flying", "persequor", "erga", "ignotus", "beauty", "universitas", "pars", "rota", "repeto", "bellicus", "procinctu", "oculus", "sto", "obdormio", "iuro", "overlook", "cautela", "expositum", "tabgo", "conduco", "dictata", "acsi", "rudimentum", "parco", "thesis", "gestum", "sese", "vomito", "penitus", "toties", "ymber", "tradidi", "modicus", "triumphus", "audacia", "question", "praeeo", "superbus", "indidi", "nosco", "prex", "insciens", "certus", "addo", "of", "aegretudo", "veritas", "proventus", "vindico", "mons", "haec", "conqueror", "concido", "permissum", "edoceo", "acceptus", "socer", "aegrus", "pollicitus", "st", "retineo", "adulescens", "pertinacia", "puteo", "profugus", "humilis", "post", "trucido", "alii", "cognomen", "bring", "postquam", "immo", "o", "vel", "statim", "alter", "singuli", "lepidus", "claustrum", "lacunar", "velum", "cursim", "puppis", "absorbeo", "sanus", "premium", "labefacio", "plerumque", "partim", "put", "pluris", "ferre", "conscientia", "pulso", "lenitudo", "entry", "eum", "insensatus", "conor", "quodnam", "traxi", "superiority", "plorator", "invito", "funis", "prevenire", "stabulaus", "piperis", "libera", "redemptio", "impedio", "extraordinary", "detineo", "plico", "pyus", "hodiernus", "fitting", "infirme", "frequentatio", "claudus", "minuo", "liber", "expositus", "vici", "effervo", "longus", "abbas", "exturbo", "principium", "passer", "sal", "eruo", "tenerum", "plecto", "quasi", "dives", "extremus", "devoco", "infitialis", "te", "gero", "volo", "dubium", "construo", "excusatio", "exhorresco", "avaritia", "provideo", "lepor", "amiculum", "munerior", "iniectum", "just", "minui", "finis", "diutius", "legatarius", "insons", "pene", "pueriliter", "over-hasty", "hoc", "expeto", "totiens", "despicio", "preterea", "invado", "mitto", "validus", "induco", "vendolius", "ingens", "ianua", "consutum", "difficilis", "custos", "deprecor", "pateo", "cunctus", "concisus", "lino", "aliquantum", "acervus", "lentis", "investigo", "feretrum", "accommodo", "neco", "rem", "voluptarius", "privo", "secerno", "calcar", "inflammatio", "dedecus", "celer", "ratum", "divitie", "conforto", "depono", "ordeum", "constituo", "divinitus", "volaticus", "ciminosus", "cerno", "placide", "tergus", "plane", "argentum", "suppono", "amplexus", "perfectus", "ter", "fenestra", "prolixus", "fundo", "laceratio", "recepi", "incredibilis", "turba", "adsum", "perturbo", "inflictum", "contendo", "suppellex", "digredior", "demulceo", "inflecto", "excito", "pando", "dedico", "vallum", "prebeo", "lusi", "menapiorum", "illas", "malbodiensis", "quin", "macellarius", "concero", "peccatus", "pressi", "ut", "utilis", "ducis", "actum", "limina", "velociter", "contemno", "revoco", "colligo", "gregatim", "curtus", "proicio", "inclino", "qui", "vero", "gandavum", "procella", "merces", "humo", "diluo", "tu", "patrocinor", "aqua", "dies", "contactus", "perscitus", "mairia", "canis", "tredecim", "repugno", "exitium", "vobis", "scaldus", "quid", "admitto", "proneptos", "precor", "inflixi", "fodio", "apto", "vestio", "quaesitio", "immerito", "siccus", "comitatus", "iussum", "emineo", "nequitia", "liberaliter", "lamna", "miscui", "intellego", "estus", "vinitor", "prefectum", "curvus", "glacialis", "delinquo", "lusum", "vitiosus", "recedo", "aliqui", "conitor", "increpare", "quem", "periclitor", "itum", "miles", "rex", "xiphias", "narro", "baiulus", "commissum", "factum", "etc", "inflatio", "mercedis", "ceterus", "petitus", "infligo", "solitudo", "creber", "publica", "ventito", "proinde", "deinde", "perfruor", "probo", "oppono", "planxi", "percipio", "caute", "flamma", "pyropus", "adimpleo", "pulmo", "public", "derelinquo", "natio", "clamor", "crebro", "grando", "cruentus", "infodio", "pendeo", "wreck", "mos", "platea", "requietum", "semel", "delecto", "veris", "matrimonium", "apparatus", "rarus", "impetus", "hominis", "lateque", "velut", "dicto", "puto", "infidus", "carmen", "rotomagense", "suum", "nichilominus", "expostulo", "egeo", "progenies", "hi", "facultas", "quam", "profusum", "littera", "mores", "renuo", "adhuc", "lesio", "influi", "noctis", "noceo", "prolato", "maiores", "certo", "ceteri", "poposco", "oportunitas", "intereo", "contineo", "epulor", "bestia", "preconor", "noble", "irrito", "pater", "main", "cervus", "iunctum", "cras", "consido", "plura", "quaenam", "infirmus", "universe", "aut", "artis", "expilatio", "pirum", "litterae", "into", "maculosus", "insequor", "tumultus", "condato", "fructuarius", "igitur", "lamentatio", "militis", "memoria", "fortasse", "qualislibet", "celebrer", "materia", "consilio", "eximo", "duco", "lucis", "laqueus", "precipuus", "corroboro", "relectum", "furtum", "campana", "polleo", "video", "pertineo", "metim", "mandatum", "in", "quasso", "promptum", "vir", "imperceptus", "pestifere", "ledo", "siclinium", "propositum", "effectus", "dispono", "contentus", "quantum", "magnus", "invideo", "ista", "suadeo", "vacuus", "defero", "fere", "illis", "blesense", "rapidly", "urbanus", "malum", "corporis", "prognatus", "kind", "abduco", "tolero", "infitior", "pyga", "prae", "discidium", "lacer", "sidus", "retraho", "intercepi", "imcomposite", "queribundus", "proluo", "seu", "lacrima", "effrego", "vulva", "timidus", "caecus", "perscribo", "inviso", "sarcina", "puniceus", "multum", "recuperatio", "iudex", "exclamo", "ingratus", "depraedor", "reverto", "crucio", "paulatim", "constrixi", "vicinus", "ancilla", "propero", "deduco", "letum", "querulus", "inflatus", "carisma", "porta", "expers", "harden", "niveus", "ita", "propello", "hereditas", "aegresco", "equina", "pala", "novem", "gens", "permissi", "praefinio", "adverto", "pactus", "ingenium", "verbera", "finium", "iussi", "coegi", "super", "praecelsus", "invetero", "archa", "acies", "repletus", "domesticus", "statement", "justification", "pestis", "laetitia", "benevolentia", "tuli", "luctisonus", "repsi", "itaque", "mellitus", "respondeo", "quaeso", "moris", "exposition", "domus", "nuntio", "the", "singultim", "superna", "retribuo", "holy", "inferius", "shape", "stips", "hesito", "intus", "marcieniensis", "abstergo", "iurandum", "de", "promereor", "reus", "rapid", "molestia", "hold", "defessus", "laetor", "quadrum", "eicio", "custodie", "pluvialis", "hactenus", "servitus", "coniecto", "humus", "demens", "demo", "revenio", "redemptor", "profecto", "dulcis", "meridianus", "evenio", "sequi", "lamenta", "prolecto", "aurum", "flax", "illius", "irritum", "cometes", "teneo", "concupisco", "male", "magis", "iudico", "frugalitas", "memoratus", "do", "sub", "appropinquo", "mica", "sollicitudo", "missa", "bene", "colui", "admoneo", "calamus", "invisus", "necessarius", "id", "perfero", "cupressus", "quemadmodum", "contagium", "silenti", "supellex", "cupio", "hypocrita", "quanto", "desposco", "caelestis", "pauper", "nutrimentus", "flatus", "precipue", "taruennam", "periurium", "civitas", "loco", "cauda", "assidue", "sitis", "virga", "qualitas", "scaber", "firmus", "epistula", "frux", "tabellae", "una", "saltem", "limen", "hac", "levus", "nutrimens", "profor", "pia", "exesto", "labrum", "last", "exitus", "summus", "preteritus", "sponte", "prenuntio", "istud", "eximius", "nusquam", "labor", "iungo", "sano", "quies", "infantia", "aliquotiens", "mutuus", "promissio", "pauci", "tam", "strues", "degusto", "familiaris", "cineris", "commodum", "posteri", "simul", "nuntius", "nequeo", "explico", "proveho", "effundo", "nos", "decumbo", "inconsulte", "infinitus", "desolo", "secrevi", "usque", "festino", "give", "petram", "incito", "iaculator", "orno", "concepta", "carbo", "aliquanto", "pessime", "impetro", "palea", "auxatia", "famulus", "prudentia", "soleo", "auris", "cautum", "vestivi", "affectus", "functus", "salus", "precedo", "promiscuus", "pepulo", "studio", "natalis", "aeris", "laboriosus", "quadrivium", "loquacis", "monastery", "aliquo", "forum", "quadratus", "distinguished", "aggero", "tergum", "fidelitas", "titulus", "laqueum", "alioqui", "illiam", "progressus", "promovi", "about", "impedito", "quantacumque", "mora", "sic", "immotus", "dictator", "thermae", "praetorgredior", "praecipio", "complectus", "grassor", "inops", "mensis", "illarum", "fenum", "mitis", "optimates", "aurissiodorenses", "tripudio", "mei", "prope", "quantotius", "quercus", "pessimus", "fultus", "textrix", "excessum", "vulnero", "iam", "cognosco", "procer", "dilgenter", "posthabeo", "superficies", "dimitto", "anser", "magister", "pollex", "exilis", "humerus", "arbor", "flash", "gemo", "richarius", "torrens", "intempestivus", "valiturus", "infortunatus", "constupro", "one", "rogo", "vomica", "utroque", "templovium", "hec", "constructum", "facina", "ac", "letifico", "quondam", "aestivus", "quantuslibet", "idcirco", "pulpa", "forensis", "risum", "textor", "cupiditas", "universus", "serio", "invictus", "cunae", "siquidem", "sabbatum", "resumptum", "improvidus", "as", "superfluo", "ineptio", "promisce", "presum", "labia", "exustio", "natus", "explanation", "curiosus", "pluit", "atrox", "to", "dumtaxat", "melior", "vehementer", "plebs", "apud", "unseasonable", "praesidium", "patronus", "imitor", "distribuo", "pontis", "genus", "aequitas", "tersus", "septem", "priscus", "sepelio", "gemblacensis", "baby", "patris", "indigeo", "be", "elemosina", "integer", "pharetra", "necesse", "interfectum", "exhilaro", "precepio", "sublatum", "utilitas", "removeo", "caste", "thoroughly", "consueta", "synagoga", "responsum", "callidus", "exhibeo", "singularis", "sink", "end", "godly", "convoco", "summisse", "cunabula", "cessi", "tres", "reverti", "depopulor", "leve", "comitissa", "debilito", "undique", "plusculus", "purus", "solis", "mare", "pupillus", "curto", "vultus", "supplicium", "iudicium", "pendo", "lepos", "concipio", "accerso", "lucror", "out", "quoque", "vivo", "nepotis", "exequor", "profundum", "impuli", "cicuta", "morior", "incertus", "trepide", "orior", "paries", "pudor", "fortunate", "steti", "se", "compono", "infimus", "priores", "opportunus", "exorior", "imperator", "infestus", "quare", "neque", "infinitio", "dedecor", "totondi", "interrogatio", "distulo", "diligentia", "pungo", "pumilius", "maritus", "sequax", "ordinem", "paciscor", "ubi", "infirmitas", "barba", "aeternus", "digressio", "tempestas", "tardus", "negotium", "sicut", "phasmatis", "posco", "vulturius", "infossum", "infectum", "constringo", "monitio", "reddo", "armarium", "quingenti", "audeo", "frustra", "mutatio", "artificiosus", "questio", "viscus", "supero", "valui", "dat", "misceo", "pumilio", "liberalis", "consultum", "silentium", "causa", "quidam", "spolio", "endure", "lentus", "vescor", "hodie", "persuadeo", "ambitus", "shine", "defluo", "extorqueo", "duo", "dididi", "rubor", "quarum", "prolapsio", "creptio", "prosum", "tempero", "aegrotatio", "destituo", "indomitus", "inde", "econtra", "libenter", "laganum", "legentis", "umquam", "obligatus", "proloquor", "adstringo", "manentia", "parietis", "iste", "erudio", "munitio", "rgis", "percepi", "talus", "hostes", "his", "quattuor", "predico", "diligo", "victor", "impenetrabiilis", "inquis", "noster", "odio", "puga", "labefeci", "adepto", "consulo", "aedificium", "suscipio", "prepono", "huius", "praesentia", "avesniis", "primitus", "requiesco", "charisma", "arbitro", "proficuus", "inquam", "excuso", "fero", "vestis", "madesco", "hilaris", "faenum", "humanitas", "aspicio", "putator", "arceo", "castellandum", "contradictio", "aiunt", "sopor", "agnosco", "utor", "opportune", "tonsor", "saepenumero", "conatus", "tanquam", "comedi", "suspendi", "inflexi", "insolitus", "brevis", "legens", "excedo", "salutor", "exsto", "amoveo", "aliud", "sato", "illacrimo", "rotundus", "cena", "vespillo", "caterva", "lex", "loci", "opprobrium", "festinatio", "beneficium", "sui", "exstingui", "constanter", "intentio", "aranea", "protesto", "consuetudo", "praemo", "impulsum", "profatus", "pudendus", "tricesimus", "exitiabilis", "rei", "permitto", "quod", "absconditus", "reliquum", "quisquam", "persuasi", "vociferor", "offensio", "lentulus", "discipulus", "sine", "inieci", "dominatus", "praecipuus", "quisquis", "respondi", "niger", "arbitror", "amplus", "gigno", "expertus", "rutum", "ficus", "vulnus", "supellectilis", "copiose", "primo", "digestor", "dusiol", "iniuria", "libertas", "potior", "cernuus", "coniuratus", "temporis", "tubineus", "altera", "infideliter", "perduco", "equus", "ludo", "conculco", "panis", "loquax", "dens", "auditor", "praefoco", "lemma", "secus", "lutosensis", "lenocinium", "cubicularius", "levitas", "avarus", "letifer", "domino", "lacerta", "sua", "locupleto", "queror", "perculsus", "pressum", "expleo", "opinio", "tectum", "verumptamen", "posterus", "ilico", "cultellus", "nostri", "ministro", "quereia", "quernus", "rexi", "curatio", "distinguo", "persisto", "indagatio", "cibus", "misi", "exsertus", "right", "dolose", "vos", "prius", "uticensium", "episcopalis", "proficio", "revertor", "scribo", "confessus", "defleo", "electus", "prolutum", "conservo", "patientia", "vulgo", "tametsi", "juvenis", "pictoratus", "prolix", "lima", "pedis", "perspicuus", "cura", "necne", "subsequor", "canonicus", "pono", "me", "calamitas", "frater", "placeo", "prohibitio", "infecundus", "plagiarius", "mens", "etiam", "pusillus", "vito", "puter", "civis", "aliquot", "educo", "quos", "laetifico", "consuo", "sumptus", "insperatus", "voluptas", "pretereo", "perceptum", "supersum", "alveus", "pictor", "plus", "quantocius", "sapienter", "cognatus", "fontium", "ebullio", "nihil", "vis", "velle", "immoderate", "aro", "utrimque", "decens", "secundum", "mentionem", "defer", "acidus", "fugitivus", "includo", "ut", "infensus", "terrarum", "propono", "scamnum", "procurator", "fruor", "hunnam", "amaritudo", "repere", "legio", "firmo", "degenero", "proelium", "etsi", "testimonium", "macula", "par", "illos", "scrinium", "munus", "dolosus", "dulcedo", "virtus", "vomer", "contabesco", "pulpitum", "spectaculum", "lactans", "pecto", "patria", "purgo", "peremptum", "catervatim", "egidius", "suscito", "severitas", "relinquo", "cuiusmodi", "sceleratus", "consuasor", "moveo", "didicerat", "demonstro", "itineris", "vinum", "iocus", "litigo", "itero", "vestrum", "cohesi", "brocherota", "peritus", "celeritas", "nepos", "insolita", "navi", "salveo", "periclitatus", "ciminatio", "durus", "pre", "amitto", "pessum", "accipio", "contectum", "prompte", "coma", "sulum", "modestus", "pervenio", "ratio", "perlustro", "promitto", "vidi", "infero", "doceo", "levamentum", "infra", "asperitas", "lactatio", "vae", "dare", "talis", "volva", "nolo", "maero", "rumor", "quero", "fimus", "substantia", "presentia", "stella", "praestantia", "perimo", "astringo", "despecto", "compello", "letitia", "numquam", "nisi", "translatum", "mallui", "capio", "cleaning", "infortunium", "operis", "vapulus", "laudo", "opes", "misereor", "querimonia", "notarius", "saepius", "pristinus", "monstro", "summopere", "subvenio", "do", "quenam", "subpono", "honest", "incubo", "form", "moratlis", "sedi", "cuius", "cariosus", "pudeo", "obvius", "estivus", "occasio", "amita", "aliquando", "reptum", "os", "rependo", "praeceptum", "comprobo", "diuturnus", "parentis", "insideo", "quaedam", "monasterium", "admonitio", "curso", "graviter", "respicio", "solutio", "devoveo", "sortitus", "mando", "rego", "arbustum", "lucrosus", "ingero", "scriptum", "comes", "loquor", "discedo", "mus", "infelix", "disputo", "frango", "largior", "tristis", "vestitum", "beatus", "victus", "serius", "hortus", "intellectum", "capto", "obieci", "pello", "perversum", "luctus", "lacrimosus", "potum", "servo", "aristocrat", "presidium", "decoro", "mutuo", "inanis", "prodigiosus", "pugno", "inferus", "aequus", "patefacio", "infelicitas", "cornu", "sitio", "pertingo", "eminus", "surgo", "probitas", "supernus", "pulmentum", "hortor", "pigra", "eatenus", "claro", "lenocinor", "cubitum", "galea", "triginta", "molestus", "persuasum", "poena", "singultus", "antiquus", "deorsum", "peruro", "secuutus", "alteration", "perniciosus", "gravitas", "avoco", "promoveo", "misere", "templum", "pravitas", "studiose", "capillus", "deludo", "orator", "adeo", "sprevi", "tergeo", "nunquam", "scripsi", "paupertas", "emoveo", "lacto", "preceptum", "rideo", "modica", "tritum", "ruo", "suggero", "plorabilis", "comminor", "fleeting", "supervacuus", "sedeo", "quando", "mater", "occurro", "surrectum", "repono", "voluntas", "tepesco", "coruscus", "deprecator", "furor", "auxilium", "adsuesco", "lacero", "audio", "quadraginta", "omnis", "auctor", "cubo", "improviso", "magus", "viriliter", "elementum", "facilis", "illic", "letor", "ideo", "inflexus", "i", "sessum", "reversus", "corrumpo", "princeps", "emo", "insisto", "mundus", "nolle", "untimely", "instanter", "provectus", "cimentarius", "gravatus", "rursus", "solum", "mentis", "exitosus", "eternus", "percutio", "frequentia", "detego", "que", "refectorium", "volutabrum", "penus", "cruciamentum", "delicate", "editio", "quater", "quodammodo", "voluntarius", "amor", "proprie", "casus", "retractum", "consuesco", "iter", "peius", "immodicus", "per", "berlinmonte", "fluctus", "ferus", "potius", "absens", "inflo", "oppressum", "dux", "lux", "taceo", "maximus", "praedico", "nascor", "reformo", "fortis", "transfero", "maior", "celebrus", "plerusque", "lente", "industrius", "sepe", "solium", "tondeo", "supplex", "exitialis", "forem", "exigo", "miror", "tamisium", "tamdiu", "horrendus", "libri", "illud", "eques", "hora", "primoris", "make", "lens", "acerbus", "laboriose", "stabilis", "imber", "praesto", "adhaero", "restituo", "treverim", "satago", "servio", "aeneus", "comprovincialis", "obviam", "instigo", "curiositas", "didtum", "placidus", "creta", "opisthotonos", "cruris", "conversatio", "misericordia", "superne", "sollicitus", "preclarus", "coepi", "loricatus", "taedium", "speculum", "incassum", "impunitus", "cunctatio", "sanctimonialis", "expello", "cometissa", "pipio", "opposui", "recito", "candidus", "placet", "dummodo", "prior", "carus", "affligeniensis", "torqueo", "diutinus", "mestitia", "inductum", "excrucio", "scaphium", "tendo", "manus", "quoniam", "crapula", "abundantia", "vinco", "necdum", "proprius", "inflexio", "progigno", "incurro", "excellence", "nominetenus", "perperam", "silva", "volens", "ambulo", "interficio", "terminus", "facio", "denego", "ostium", "angelus", "exspecto", "angulus", "contigi", "expletum", "polenta", "deripio", "numerus", "libero", "licet", "lectica", "fiducia", "transtuli", "sacrificum", "crucis", "hae", "pica", "stillicidium", "admiratio", "pugnus", "prudens", "infidi", "occidi", "recognosco", "pluma", "cursito", "talio", "sumo", "fama", "scabies", "coloro", "diu", "eluo", "cado", "suasoria", "traiectensium", "antepono", "ille", "rostrum", "gladius", "mel", "haud", "bibo", "exemplum", "ludus", "pulvis", "dido", "atavus", "everto", "creatura", "pocius", "postremo", "deficio", "interceptum", "defendo", "obduro", "desparatus", "sophismata", "imprimis", "accendo", "tum", "pulsum", "ex", "macresco", "appareo", "caput", "sceleris", "ater", "fateor", "solio", "furtificus", "emercor", "victoria", "excolo", "preproperus", "nemo", "mire", "uti", "habitus", "madidus", "atra", "pulchritudinis", "volup", "quassatio", "verumtamen", "optimus", "suppellectilus", "destroy", "plenus", "officium", "libere", "letaliter", "percunctor", "articulus", "purgatio", "maneo", "refero", "infecunditas", "pactum", "sacculus", "verecundia", "putus", "quinquennis", "recupero", "totidem", "gusto", "confero", "ventosus", "custodia", "lambo", "lemiscus", "ruin", "natura", "impero", "approbo", "sursum", "aeger", "vernandense", "fors", "appositus", "liberum", "adficio", "effugio", "fieri", "viduata", "piscis", "vestra", "peior", "meretrix", "carcer", "videlicet", "inedicabilis", "comminuo", "ecquando", "veni", "prosper", "verus", "seorsum", "crustulum", "amissio", "quadruplor", "quatinus", "emerio", "comprehendo", "at", "absque", "tepidus", "confido", "blanditia", "appello", "senex", "illusi", "vera", "sonitus", "tyrannus", "bos", "offer", "immunda", "laevus", "ortus", "amplitudo", "frofui", "gratia", "crinitus", "infidelis", "scelero", "cursor", "antea", "claudeo", "surrexi", "ventum", "back", "clibanus", "quedam", "admiror", "construxi", "tantum", "sum", "alterum", "prolu", "concupiscentia", "tornacense", "pulchritudo", "exheredo", "pons", "triduana", "excludo", "trans", "frugi", "spiculum", "labores", "nescio", "foveo", "texi", "metus", "repens", "similitudo", "but", "exibeo", "nonnumquam", "an", "somnus", "imperium", "asvesniis", "adiuvo", "nimirum", "hostium", "membrana", "informis", "cotidie", "presencia", "contraho", "insidiae", "laetificus", "promotum", "compatior", "polliceor", "salvus", "cui", "phitonicum", "iuris", "partis", "inservio", "forsan", "efficio", "proditor", "fulcio", "mille", "lucrum", "fructus", "temperantia", "puchre", "macer", "anything", "virgo", "diluculo", "paene", "diversus", "tertius", "meminisse", "minutum", "factus", "immortalis", "perpetuus", "pugna", "conscendo", "copie", "salsus", "laus", "reddere", "commemoro", "similis", "memor", "sequor", "conscindo", "furtim", "novitas", "laetans", "comperio", "modo", "namucense", "textilis", "vixi", "textus", "conturbo", "modus", "sordeo", "inflatius", "copia", "simulatio", "fortuna", "postea", "prolatio", "senis", "persolvo", "amicus", "decimus", "egrotatio", "poematis", "progenui", "ascisco", "importo", "umbra", "quidem", "perustum", "haffligeniensis", "denuncio", "coadunatio", "scelus", "illusum", "aestas", "imago", "tantus", "lacteus", "concutio", "voltur", "evito", "desidiosus", "no", "infula", "infirmo", "pruma", "interdum", "quaestuosus", "atrum", "promereo", "cathalaunenses", "crastinus", "thesaurus", "vigor", "secedo", "traho", "profiteor", "tedium", "importunus", "carbonis", "somniculouse", "lebes", "consulatio", "porro", "excellentia", "meditatus", "vulpes", "album", "asporto", "judicium", "dulcidine", "depromo", "volubiliter", "putesco", "quovis", "digressus", "satio", "pertinax", "infigo", "montis", "adsumo", "coloratus", "transeo", "expedio", "aperio", "motum", "navis", "quartus", "pullulo", "tractum", "scivi", "adeptio", "prefero", "swiftly", "caelum", "sapiens", "muneris", "directus", "ventus", "libellus", "pervidi", "tersi", "dito", "plene", "illi", "accusator", "praenuntius", "consurgo", "elatus", "lucerna", "communis", "leviter", "inimicus", "introduco", "exheres", "laeto", "malus", "pomum", "potissimum", "thalassinus", "nuper", "inritus", "opus", "curo", "pignus", "ultio", "utrius", "gratus", "inceptor", "aetas", "indux", "lammina", "ipse", "perussi", "minus", "querella", "iussu", "velox", "oporotheca", "mugio", "dum", "labefacto", "laesio", "ligo", "pepulli", "domina", "insto", "aliquis", "fides", "divinus", "promus", "irritus", "laeve", "adfero", "adamo", "vester", "compater", "immundus", "commoneo", "orbis", "decerto", "thorax", "alienus", "destroyed", "consummatio", "arca", "illae", "lacrimabilis", "conspergo", "mereor", "relevo", "ira", "pluo", "eluvio", "ascit", "oblittero", "commessatio", "quilibet", "depredor", "contrado", "vesco", "inruo", "securus", "relaxo", "testis", "felix", "advenio", "letatio", "ordinatio", "debeo", "pulchra", "cum", "voluptuosus", "illuc", "cito", "incola", "affligo", "stipes", "legatus", "utrum", "administratio", "insania", "minor", "habere", "winged", "indignatio", "latum", "mussito", "vigilo", "seductor", "ludius", "frequento", "versus", "vorago", "lector", "catena", "dubium", "repente", "sollers", "pertimesco", "fefello", "perdo", "recolo", "crudelis", "iacio", "timeo", "perpetro", "victum", "plactum", "quantus", "honorabilis", "best", "instituo", "coniuro", "vix", "ergo", "nonnullus", "mihi", "pyxidis", "exulto", "swift", "prehendo", "essum", "theologus", "promineo", "lenitas", "inscribo", "idoneus", "triduanus", "superbia", "dimidium", "cetera", "ictus", "insinuo", "adaugeo", "fas", "intro", "filia", "si", "consulto", "erro", "punio", "declare", "quorum", "mensa", "cubicularis", "pretermissio", "fleo", "contagio", "palam", "immanitas", "comparo", "crur", "rectum", "lepus", "posui", "despiciens", "defigo", "quris", "hoienses", "nihilum", "marceniense", "ultra", "proximus", "diligens", "thymum", "arguo", "perverto", "culpo", "salis", "acknowledge", "ulterius", "edificium", "externus", "comedo", "malmundarium", "matera", "clamo", "succendo", "prefoco", "quercetum", "absentis", "promissor", "hic", "degero", "lacus", "pigrum", "illorum", "ludio", "ipsum", "alia", "questuosus", "custodiae", "munimentum", "luna", "monstrum", "rodoenus", "edico", "plures", "turbatio", "contingo", "aer", "eripio", "provolvere", "caritas", "inclitus", "constans", "lascivio", "frons", "olim", "quinam", "incorruptus", "satura", "surculus", "retraxi", "deleo", "pro", "perterreo", "fatigo"   
  }';
begin
  return _word[random() * array_length(_word, 1)];
end
$$;


create or replace function lipsum_sentence (
  _w_count    int default 5,
  _init_cap   boolean default false, 
  _final_dot  boolean default true
) returns varchar 
language plpgsql as $$
declare
  s varchar;
begin
  -- concatenate first word
  s = lipsum_word();

  -- first letter upper case
  if _init_cap then
    s = initcap(s);
  end if;

  -- concatenate more random words
  for i in 2 .. _w_count loop
    s = concat(s, ' ', lipsum_word());
  end loop;

  -- add a final point
  if _final_dot then
    s = concat(s, '.');
  end if;

  return s;
end
$$;


create or replace function lipsum_paragraph (
  _s_count  int default 5,
  _w_count  int default 5,
  _new_line boolean default true
) returns varchar 
language plpgsql as $$
declare
  s varchar;
begin
  for i in 1 .. _s_count loop
    s = concat(s, ' ', lipsum_sentence(_w_count, true, true));
  end loop;

  if _new_line then
    s = concat(s, '\n');
  end if;

  return s;
end
$$;


create or replace function lipsum_paragraphs (
  _p_count  int default 5,
  _s_count  int default 5,
  _w_count  int default 5
) returns varchar 
language plpgsql as $$
declare
  s varchar;
begin
  for i in 1 .. _p_count loop
    for j in 1 .. _s_count loop
      s = concat(s, lipsum_sentence(_w_count, true, true));
    end loop;

    s = concat(s, '\n');
  end loop;

  return s;
end
$$;

Test it this way:

select lipsum_word();
select lipsum_sentence();
select lipsum_sentence(8, true, true);
select lipsum_paragraph(5, 10);
select lipsum_paragraphs(6, 7, 10);

Upvotes: 1

Jhonny Ramirez Zeballos
Jhonny Ramirez Zeballos

Reputation: 3156

Step 1.- Install https://postgresql-anonymizer.readthedocs.io/

Step 2.- For TEXT and VARCHAR columns, you can use the classic Lorem Ipsum generator:

anon.lorem_ipsum() returns 5 paragraphs
anon.lorem_ipsum(2) returns 2 paragraphs
anon.lorem_ipsum( paragraphs := 4 ) returns 4 paragraphs
anon.lorem_ipsum( words := 20 ) returns 20 words
anon.lorem_ipsum( characters := 7 ) returns 7 characters

Upvotes: 1

Haytem BrB
Haytem BrB

Reputation: 1499

You can use the repeat() function; quoting from the Postgres String Functions and Operators documentation:

Function: repeat(string text, number int)
Return Type: text
Description: Repeat string the specified number of times

testdb=# SELECT REPEAT('SQL', 3);
  repeat
-----------
 SQLSQLSQL
(1 row)

You can also use a custom function to generate a random string with a defined lengh, for that refer to this question: How do you create a random string that's suitable for a session ID in PostgreSQL?

Upvotes: 4

Create your own lipsum function.

create or replace function lipsum( quantity_ integer ) returns character varying
    language plpgsql
    as $$
  declare
    words_       text[];
    returnValue_ text := '';
    random_      integer;
    ind_         integer;
  begin
  words_ := array['lorem', 'ipsum', 'dolor', 'sit', 'amet', 'consectetur', 'adipiscing', 'elit', 'a', 'ac', 'accumsan', 'ad', 'aenean', 'aliquam', 'aliquet', 'ante', 'aptent', 'arcu', 'at', 'auctor', 'augue', 'bibendum', 'blandit', 'class', 'commodo', 'condimentum', 'congue', 'consequat', 'conubia', 'convallis', 'cras', 'cubilia', 'cum', 'curabitur', 'curae', 'cursus', 'dapibus', 'diam', 'dictum', 'dictumst', 'dignissim', 'dis', 'donec', 'dui', 'duis', 'egestas', 'eget', 'eleifend', 'elementum', 'enim', 'erat', 'eros', 'est', 'et', 'etiam', 'eu', 'euismod', 'facilisi', 'facilisis', 'fames', 'faucibus', 'felis', 'fermentum', 'feugiat', 'fringilla', 'fusce', 'gravida', 'habitant', 'habitasse', 'hac', 'hendrerit', 'himenaeos', 'iaculis', 'id', 'imperdiet', 'in', 'inceptos', 'integer', 'interdum', 'justo', 'lacinia', 'lacus', 'laoreet', 'lectus', 'leo', 'libero', 'ligula', 'litora', 'lobortis', 'luctus', 'maecenas', 'magna', 'magnis', 'malesuada', 'massa', 'mattis', 'mauris', 'metus', 'mi', 'molestie', 'mollis', 'montes', 'morbi', 'mus', 'nam', 'nascetur', 'natoque', 'nec', 'neque', 'netus', 'nibh', 'nisi', 'nisl', 'non', 'nostra', 'nulla', 'nullam', 'nunc', 'odio', 'orci', 'ornare', 'parturient', 'pellentesque', 'penatibus', 'per', 'pharetra', 'phasellus', 'placerat', 'platea', 'porta', 'porttitor', 'posuere', 'potenti', 'praesent', 'pretium', 'primis', 'proin', 'pulvinar', 'purus', 'quam', 'quis', 'quisque', 'rhoncus', 'ridiculus', 'risus', 'rutrum', 'sagittis', 'sapien', 'scelerisque', 'sed', 'sem', 'semper', 'senectus', 'sociis', 'sociosqu', 'sodales', 'sollicitudin', 'suscipit', 'suspendisse', 'taciti', 'tellus', 'tempor', 'tempus', 'tincidunt', 'torquent', 'tortor', 'tristique', 'turpis', 'ullamcorper', 'ultrices', 'ultricies', 'urna', 'ut', 'varius', 'vehicula', 'vel', 'velit', 'venenatis', 'vestibulum', 'vitae', 'vivamus', 'viverra', 'volutpat', 'vulputate'];
    for ind_ in 1 .. quantity_ loop
      ind_ := ( random() * ( array_upper( words_, 1 ) - 1 ) )::integer + 1;
      returnValue_ := returnValue_ || ' ' || words_[ind_];
    end loop;
    return returnValue_;
  end;
$$;

And then use it, for example, to generate 50 words.

select lipsum( 50 );

Upvotes: 9

Evan Steinbrenner
Evan Steinbrenner

Reputation: 247

I always prefer to use Lorem Ipsum text rather than complete garbage. I find it much easier to look at rather than some garbage or some word repeated numerous times. You can find many generators on line that can give you as long a block of text as you want. It isn't going to be clean and will include quotes and other things you may need to deal with which may or may not be a benefit for your testing.

For example: http://www.lipsum.com/

Upvotes: -3

Related Questions