Thread: Postgresql and scripting
I'm trying to create and populate some study tables using a couple of scripts that came with my 'SQL in 10 minutes' book. This is how I tried to run the script to create and populate tables in a database named test: test-# \i create.txt psql:create.txt:1: ERROR: syntax error at or near "" at character 1 Here is the top of the script: ------------------------------------------------------------ - - S a m s T e a c h Y o u r s e l f S Q L i n 1 0 M i n u t e s - - h t t p : / / w w w . f o r t a . c o m / b o o k s / 0 6 7 2 3 2 5 6 6 7 / - - E x a m p l e t a b l e c r e a t i o n s c r i p t s f o r Po s t g r e S Q L . ------------------------------------------------------------ - - - - - - - - - - - - - - - - - - - - - - - - - - - C r e a t e C u s t o m e r s t a b l e - - - - - - - - - - - - - - - - - - - - - - - - - C R E A T E T A B L E C u s t o m e r s ( c u s t _ i d c h a r ( 1 0 ) N O T N U L L , c u s t _ n a m e c h a r ( 5 0 ) N O T N U L L , c u s t _ a d d r e s s c h a r ( 5 0 ) , c u s t _ c i t y c h a r ( 5 0 ) , c u s t _ s t a t e c h a r ( 5 ) , c u s t _ z i p c h a r ( 1 0 ) , c u s t _ c o u n t r y c h a r ( 5 0 ) , c u s t _ c o n t a c t c h a r ( 5 0 ) , c u s t _ e m a i l c h a r ( 2 5 5 ) ) ; Can someone tell me what's going wrong here, why am I getting this error message? Thanks, Jerome
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Hi, On Tue, 7 Sep 2004, Jerome Lyles wrote: > I'm trying to create and populate some study tables using a couple of scripts > that came with my 'SQL in 10 minutes' book. This is how I tried to run the > script to create and populate tables in a database named test: > > test-# \i create.txt > psql:create.txt:1: ERROR: syntax error at or near "" at character 1 > > Here is the top of the script: > ------------------------------------------------------------ > - - S a m s T e a c h Y o u r s e l f S Q L i n 1 0 M i n u t e > s The single dash must be --. PostgreSQL treats -- as the comment lines. i.e.: - -------------- - -- Sams Teach ... - -- Anyway, IMHO you should directly begin with the following line: > CREATE TABLE customers ... The lines above this one are useless comments. Regards, - -- Devrim GUNDUZ devrim~gunduz.org devrim.gunduz~linux.org.tr http://www.tdmsoft.com http://www.gunduz.org -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.2.1 (GNU/Linux) iD8DBQFBPZxKtl86P3SPfQ4RAgMbAJ9m3zTRnZiKtlmn0LI3MgjMDP/CdACeJ2rp fR/DMnCjNbPLEsSDIampUJk= =OexA -----END PGP SIGNATURE-----
On Sep 7, 2004, at 7:24 AM, Jerome Lyles wrote: > test-# \i create.txt > psql:create.txt:1: ERROR: syntax error at or near "" at character 1 > > Here is the top of the script: > ------------------------------------------------------------ > - - S a m s T e a c h Y o u r s e l f S Q L i n 1 0 M i > n u t e > It seems that your file might be in unicode (utf-16) since it appears there is whitespace after every character. Check your editor settings and resave the file. Best, John DeSoi, Ph.D.
On Tuesday 07 September 2004 01:50 am, John DeSoi wrote: > On Sep 7, 2004, at 7:24 AM, Jerome Lyles wrote: > > test-# \i create.txt > > psql:create.txt:1: ERROR: syntax error at or near "" at character 1 > > > > Here is the top of the script: > > ------------------------------------------------------------ > > - - S a m s T e a c h Y o u r s e l f S Q L i n 1 0 M i > > n u t e > > It seems that your file might be in unicode (utf-16) since it appears > there is whitespace after every character. Check your editor settings > and resave the file. > > Best, > > John DeSoi, Ph.D. Right now it's in unicode (utf-8), switching between utf 8 and sixteen has no effect on the spaces between letters. Tried iso 8859-1 and iso 8859-15 but the editor window was empty for these encodings. Can someone point me to a sed or shell script that I can use on a text file to remove the whitespace between the letters in the words only? Here is the top of the script file as it stands now: - - C r e a t e C u s t o m e r s t a b l e C R E A T E T A B L E C u s t o m e r s ( c u s t _ i d c h a r ( 1 0 ) N O T N U L L , c u s t _ n a m e c h a r ( 5 0 ) N O T N U L L , c u s t _ a d d r e s s c h a r ( 5 0 ) , c u s t _ c i t y c h a r ( 5 0 ) , c u s t _ s t a t e c h a r ( 5 ) , c u s t _ z i p c h a r ( 1 0 ) , c u s t _ c o u n t r y c h a r ( 5 0 ) , c u s t _ c o n t a c t c h a r ( 5 0 ) , c u s t _ e m a i l c h a r ( 2 5 5 ) ) ;
On Tue, Sep 07, 2004 at 01:33:08PM -1000, Jerome Lyles wrote: > On Tuesday 07 September 2004 01:50 am, John DeSoi wrote: > > On Sep 7, 2004, at 7:24 AM, Jerome Lyles wrote: > > > test-# \i create.txt > > > psql:create.txt:1: ERROR: syntax error at or near "" at character 1 > > > > > > Here is the top of the script: > > > ------------------------------------------------------------ > > > - - S a m s T e a c h Y o u r s e l f S Q L i n 1 0 M i > > > n u t e > > > > It seems that your file might be in unicode (utf-16) since it appears > > there is whitespace after every character. Check your editor settings > > and resave the file. > Right now it's in unicode (utf-8), switching between utf 8 and sixteen has no > effect on the spaces between letters. Tried iso 8859-1 and iso 8859-15 but > the editor window was empty for these encodings. Did you try using recode? recode utf16..iso8859-15 filename Of course, just changing the encoding setting in the editor does not automatically recode the file, does it? -- Alvaro Herrera (<alvherre[a]dcc.uchile.cl>) "Ni aun el genio muy grande llegaría muy lejos si tuviera que sacarlo todo de su propio interior" (Goethe)
On Wed, 2004-09-08 at 00:33, Jerome Lyles wrote: ... > Can someone point me to a sed or shell script that I can use on a text file to > remove the whitespace between the letters in the words only? Here is the > top of the script file as it stands now: > > - - C r e a t e C u s t o m e r s t a b l e > $ echo '- - C r e a t e C u s t o m e r s t a b l e' | sed -e 's/\([^ ]\) \([^ ]\)/\1\2/g' -e 's/\([^ ]\) \([^ ]\)/\1\2/g' -e 's/ */ /g' -- Create Customers table -- Oliver Elphick olly@lfix.co.uk Isle of Wight http://www.lfix.co.uk/oliver GPG: 1024D/A54310EA 92C8 39E7 280E 3631 3F0E 1EC0 5664 7A2F A543 10EA ======================================== "Put on the whole armor of God, that ye may be able to stand against the wiles of the devil." Ephesians 6:11
On Tuesday 07 September 2004 10:22 pm, Dorward villaruz wrote: > hi! > > try this in commandline i assume you save the file in sams.txt > final file will be sams2.txt > > cat sams.txt | sed -e 's/ /@@/g' -e 's/ //g' -e 's/@@/ /g' > sams2.txt > > or put this in a script say convert.sh > > script start: > #!/bin/bash > cat $1 | sed -e 's/ /@@/g' -e 's/ //g' -e 's/@@/ /g' > $2 > script end: > > how to use? > > convert.sh <input file> <output file> > > best regards, > wardy > Thank you for this. I've spent a few hours today searching and experimenting to produce this code. I can almost understand the sed command. Everything between the quotes is the action to be taken. The 's' is for substitution, the / / is the whitespace to be replaced, the/@@/ is what the whitespace is replaced with but I don't know what the @@ stands for, the g means it's applied globally. I think what I just said is wrong because I have no clue why the second and third substitution are there. And finally the output is directed to $2. I'll have to wait until tomorrow evening to play with it. I look forward to it. thanks, Jerome
Jerome Lyles <susemail@hawaii.rr.com> writes: > the/@@/ is what the whitespace is replaced with but I don't know what the @@ > stands for, It doesn't stand for anything, it just means replace with "@@". Now look again at the second and third substitution... -- greg