Re: new line in psotgres - Mailing list pgsql-general

From Gavin Flower
Subject Re: new line in psotgres
Date
Msg-id 527EE252.40306@archidevsys.co.nz
Whole thread Raw
In response to Re: new line in psotgres  (Gavin Flower <GavinFlower@archidevsys.co.nz>)
Responses Re: new line in psotgres
List pgsql-general
On 10/11/13 09:18, Gavin Flower wrote:
On 10/11/13 02:38, Alban Hertroys wrote:
On Nov 9, 2013, at 12:08, abdullatheef <latheefvkpadi@gmail.com> wrote:

> you can include newline in postgre using literal E
> 
> create table table (text varchar(50));
> insert into Table (text) values (E'This is the first part \\n And this is
> the second');
Or like this:
development=> begin;
BEGIN
development=> create table t1 (text text);                                          
CREATE TABLE
development=> insert into t1 values ('This is line 1.
development'> This is line 2.');
INSERT 0 1
development=> select * from t1;     text       
-----------------This is line 1.+This is line 2.
(1 row)


Alban Hertroys
--
If you can't see the forest for the trees,
cut the trees and you'll find there is no forest.



-- Sent via pgsql-general mailing list (pgsql-general@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-general
The second methods have different characteristics...

-- test.sql
CREATE TABLE t1
(
    id SERIAL PRIMARY KEY,
    payload text
);

-- method 1
INSERT INTO t1
    (payload)
VALUES
    (E'This is the first part \\n And this is the second');
 
-- method 2
INSERT INTO t1
    (payload)
VALUES
    ('This is line 1.
    This is line 2.');

TABLE t1;

######## results:

gavin=> \i test.sql
DROP TABLE
psql:SQL.sql:8: NOTICE:  CREATE TABLE will create implicit sequence "t1_id_seq" for serial column "t1.id"
psql:SQL.sql:8: NOTICE:  CREATE TABLE / PRIMARY KEY will create implicit index "t1_pkey" for table "t1"
CREATE TABLE
INSERT 0 1
INSERT 0 1
 id |                     payload                     
----+--------------------------------------------------
  1 | This is the first part \n And this is the second
  2 | This is line 1.                                 +
    |     This is line 2.
(2 rows)



Cheers,
Gavin
I had another thought...

I redid the above, and included at test with 'E' & '\n' - just one slash before the 'n'.  The other changes are mostly cosmetic.

So now we have 2 methods that produce identical output (ignoring the id).

/*
 * Split lines text values
 *
 * splitline01.sql
 */
DROP TABLE IF EXISTS t1;

CREATE TABLE t1
(
    id SERIAL PRIMARY KEY,
    payload text
);


-- method 1
INSERT INTO t1
    (payload)
VALUES
    (E'This is the first part
\\n And this is the second');


-- method 2
INSERT INTO t1
    (payload)
VALUES
    (E'This is the first part
\n And this is the second');

 
-- method 3
INSERT INTO t1
    (payload)
VALUES
    ('This is the first part
    And this is the second');

TABLE t1;

##################################

gavin=> \i splitline01.sql
DROP TABLE
psql:splitline01.sql:12: NOTICE:  CREATE TABLE will create implicit sequence "t1_id_seq" for serial column "t1.id"
psql:splitline01.sql:12: NOTICE:  CREATE TABLE / PRIMARY KEY will create implicit index "t1_pkey" for table "t1"
CREATE TABLE
INSERT 0 1
INSERT 0 1
INSERT 0 1
 id |                     payload                     
----+--------------------------------------------------
  1 | This is the first part \n And this is the second
  2 | This is the first part                          +
    |  And this is the second
  3 | This is the first part                          +
    |     And this is the second
(3 rows)




Cheers,
Gavin

pgsql-general by date:

Previous
From: Tom Lane
Date:
Subject: Re: Query runs forever after upgrading to 9.3
Next
From: John R Pierce
Date:
Subject: Re: new line in psotgres