Re: load fom csv

From: Adrian Klaver <adrian(dot)klaver(at)aklaver(dot)com>
To: Andy Hartman <hartman60home(at)gmail(dot)com>
Cc: Francisco Olarte <folarte(at)peoplecall(dot)com>, pgsql-general(at)lists(dot)postgresql(dot)org
Subject: Re: load fom csv
Date: 2024-09-16 16:56:25
Message-ID: 48ab0c54-3bf1-451b-87d6-1b7d9b5e5e67@aklaver.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

On 9/16/24 09:46, Andy Hartman wrote:
>
> It Looks correct.
>
> $pgTable = "image_classification_master"

Connect to the database with psql and look at the table name. I'm
betting it is not image_classification_master. Instead some mixed or all
upper case version of the name.

I don't use PowerShell or Windows for that matter these days so I can't
be of much use on the script. I do suspect you will need to some
escaping to get the table name properly quoted in the script. To work
through this you need to try what I call the crawl/walk/run process. In
this case that is:

1) Crawl. Connect using psql and run the \copy in it with hard coded values.

2) Walk. Use psql with the -c argument and supply the command again with
hard coded values

3) Run. Then use PowerShell and do the variable substitution.

>
>
>
>
> On Mon, Sep 16, 2024 at 12:17 PM Adrian Klaver
> <adrian(dot)klaver(at)aklaver(dot)com <mailto:adrian(dot)klaver(at)aklaver(dot)com>> wrote:
>
> On 9/16/24 09:12, Andy Hartman wrote:
> > 2024-09-16 12:06:00.968 EDT [4968] ERROR:  relation
> > "image_classification_master" does not exist
> > 2024-09-16 12:06:00.968 EDT [4968] STATEMENT:  COPY
> > Image_Classification_Master FROM STDIN DELIMITER ',' CSV HEADER;
>
> I'm assuming this is from the Postgres log.
>
> Best guess is the table name in the database is mixed case and needs to
> be double quoted in the command to preserve the casing.
>
> See:
>
> https://www.postgresql.org/docs/current/sql-syntax-lexical.html#SQL-SYNTAX-IDENTIFIERS <https://www.postgresql.org/docs/current/sql-syntax-lexical.html#SQL-SYNTAX-IDENTIFIERS>
>
> for why.
>
> >
> > On Mon, Sep 16, 2024 at 11:52 AM Francisco Olarte
> > <folarte(at)peoplecall(dot)com <mailto:folarte(at)peoplecall(dot)com>
> <mailto:folarte(at)peoplecall(dot)com <mailto:folarte(at)peoplecall(dot)com>>> wrote:
> >
> >
> >
> >     On Mon, 16 Sept 2024 at 17:36, Andy Hartman
> <hartman60home(at)gmail(dot)com <mailto:hartman60home(at)gmail(dot)com>
> >     <mailto:hartman60home(at)gmail(dot)com
> <mailto:hartman60home(at)gmail(dot)com>>> wrote:
> >
> >         I'm trying to run this piece of code from Powershell and
> it just
> >         sits there and never comes back. There are only 131
> records in
> >         the csv.
> >         $connectionString =
> >
>  "Host=$pgServer;Database=$pgDatabase;Username=$pgUser;Password=$pgPassword"
> >         $copyCommand = "\COPY $pgTable FROM '$csvPath' DELIMITER
> ',' CSV
> >         HEADER;"
> >         psql -h $pgServer -d $pgDatabase -U $pgUser -c $copyCommand
> >         how can I debug this?
> >
> >
> >     I would start by adding -a and -e after "psql".
> >
> >     IIRC Powershell is windows, and in windows shell do not pass
> command
> >     words preparsed as in *ix to the executable, but a single command
> >     line with the executable must parse. Given the amount of
> quoting, -a
> >     and -e will let you see the commands are properly sent, and
> if it is
> >     trying to read something what it is.
> >
> >     I will also try to substitute the -c with a pipe. If it
> heals, it is
> >     probably a quoting issue.
> >
> >     Also, I just caught Ron's message, and psql might be waiting
> for a
> >     password.
> >
> >     Francisco Olarte.
> >
>
> --
> Adrian Klaver
> adrian(dot)klaver(at)aklaver(dot)com <mailto:adrian(dot)klaver(at)aklaver(dot)com>
>

--
Adrian Klaver
adrian(dot)klaver(at)aklaver(dot)com

In response to

Responses

Browse pgsql-general by date

  From Date Subject
Next Message Andy Hartman 2024-09-16 17:00:23 Re: load fom csv
Previous Message Andy Hartman 2024-09-16 16:46:53 Re: load fom csv