Reputation: 33378
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
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
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
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
Reputation: 1351
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
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