[postgis-users] Can we treat a large block of psql codes as a string and execute the string?

Stephen Woodbridge stephenwoodbridge37 at gmail.com
Wed Apr 22 08:39:57 PDT 2020


On 4/22/2020 11:15 AM, Shaozhong SHI wrote:
> Hi, Giuseppe,
>
> Thank you.
>
> As I remembered that I did a very long string in a loop and it worked.
>
> By the way, what is quickest way to print string on screen.  That 
> could be a much better way of checking.

raise notice psqlstring;

>
> Regards,
>
> Shao
>
> On Wed, 22 Apr 2020 at 14:35, Giuseppe Broccolo 
> <g.broccolo.7 at gmail.com <mailto:g.broccolo.7 at gmail.com>> wrote:
>
>     Hi Shao,
>
>     Looks like there's a syntax error in the UPDATE command that makes
>     truncate the string, I would say some missing spaces in the
>     concatenate. For instance,
>
>     [...] 'UPDATE' || output || "SET style_description [...]
>
>     should be
>
>     [...] 'UPDATE ' || output || " SET style_description [...]
>
>     Hope this helps,
>     Giuseppe.
>
>
>     Il giorno mer 22 apr 2020 alle ore 07:35 Shaozhong SHI
>     <shishaozhong at gmail.com <mailto:shishaozhong at gmail.com>> ha scritto:
>
>         Hi, Giuseppe,
>
>
>         See the following code to see what I am trying to do.
>
>         DO $$
>         DECLARE
>         wccdate TEXT;
>         output TEXT :=
>         'public.topographic_line_buckinghamshire_milton_keynes_line';
>         psqlstring TEXT;
>
>         BEGIN
>
>         execute format('ALTER TABLE %s ADD style_description
>         varchar(50)', output);
>         execute format('ALTER TABLE %s ADD style_code int2', output);
>         psqlstring := 'UPDATE' || output || "SET style_description =
>         CASE WHEN descriptiveterm ~* 'Polygon Closing Link' THEN
>         'Polygon Closing Line' ELSE 'Unclassified' END";
>         psqlstring :=  psqlstring || "'," || " " || output || ")'";
>         execute psqlstring;
>
>
>         END $$;
>
>
>         The other day when I composed a very long string to do
>         something else, it worked.
>
>         Now, I am trying to make update statement and then execute the
>         string.  But, I keep get error message saying the string gets
>         truncated.
>
>         Regards,
>
>         Shao
>
>         On Tue, 21 Apr 2020 at 23:09, Giuseppe Broccolo
>         <g.broccolo.7 at gmail.com <mailto:g.broccolo.7 at gmail.com>> wrote:
>
>             Hi Shao,
>
>             Maybe you are looking about how to pass SQL statements via
>             a shell here-document:
>
>             psql [options] <<EOF
>             SELECT *
>             FROM foo1
>             WHERE col='val';
>
>             SELECT * FROM foo2;
>             EOF
>
>             Eventual bash variable within the here-document can be
>             interpolated. To avoid that just quote the first instance
>             of EOF
>
>             psql [options] <<'EOF'
>             SELECT *
>             FROM foo1
>             WHERE col='val';
>
>             SELECT * FROM foo2;
>             EOF
>
>
>             Il giorno mar 21 apr 2020 alle ore 21:16 Shaozhong SHI
>             <shishaozhong at gmail.com <mailto:shishaozhong at gmail.com>>
>             ha scritto:
>
>                 It is quite appealing to wrap up a large block of psql
>                 codes as a string and execute the string.
>
>                 And, how to deal with quotes within quotes.
>
>                 I tried short text strings.  It worked well, but it
>                 does not seem to work with very long strings in
>                 different lines.
>
>                 Can anyone shed light on this?
>
>                 Regards,
>
>                 Shao
>                 _______________________________________________
>                 postgis-users mailing list
>                 postgis-users at lists.osgeo.org
>                 <mailto:postgis-users at lists.osgeo.org>
>                 https://lists.osgeo.org/mailman/listinfo/postgis-users
>
>             _______________________________________________
>             postgis-users mailing list
>             postgis-users at lists.osgeo.org
>             <mailto:postgis-users at lists.osgeo.org>
>             https://lists.osgeo.org/mailman/listinfo/postgis-users
>
>         _______________________________________________
>         postgis-users mailing list
>         postgis-users at lists.osgeo.org
>         <mailto:postgis-users at lists.osgeo.org>
>         https://lists.osgeo.org/mailman/listinfo/postgis-users
>
>     _______________________________________________
>     postgis-users mailing list
>     postgis-users at lists.osgeo.org <mailto:postgis-users at lists.osgeo.org>
>     https://lists.osgeo.org/mailman/listinfo/postgis-users
>
>
> _______________________________________________
> postgis-users mailing list
> postgis-users at lists.osgeo.org
> https://lists.osgeo.org/mailman/listinfo/postgis-users



More information about the postgis-users mailing list