using the "copy from" command to load tables from a txt flat file

Collapse
This topic is closed.
X
X
 
  • Time
  • Show
Clear All
new posts
  • Knepper, Michelle

    using the "copy from" command to load tables from a txt flat file

    Hi out there,

    I'm a first-time user of the "Copy ... From..." command, and I'm trying
    to load a table from a text flat file.



    I don't know if I'm using the command correctly.
    Question: I run this command as a superuser, and the "copy from"
    command is run like a SQL command on the command line, correct?
    I get the following error. Any suggestions would be greatly
    appreciated.

    [mknepper@barney datafiles]$ psql -U postgres medispan
    Welcome to psql 7.3.4, the PostgreSQL interactive terminal.

    Type: \copyright for distribution terms
    \h for help with SQL commands
    \? for help on internal slash commands
    \g or terminate with semicolon to execute query
    \q to quit

    medispan=# COPY mmw_ade_com FROM
    '/home/mknepper/medispan/datafiles/mmwadecom.txt' WITH DELIMITER '|';
    ERROR: COPY command, running in backend with effective uid 500, could
    not open file '/home/mknepper/medispan/datafiles/mmwadecom.txt' for
    reading. Errno = Permission denied (13).
    medispan=#



    Table schema:

    CREATE TABLE mmw_ade_com
    (
    gpi VARCHAR(14) NOT NULL,
    mcid INTEGER NOT NULL,
    restrictionid INTEGER NOT NULL,
    sequencenumber SMALLINT NOT NULL,
    textid INTEGER,
    PRIMARY KEY (gpi, mcid, restrictionid, sequencenumber)
    );



    example of data, from the TXT flat file, called mmwadecom.txt:

    01100040100310| 5|0|10|14608
    01100040100310| 8|0|10|17377
    01100040100310| 8|0|20|18061
    01100040100310| 8|0|30|14608
    01100040100310| 22|0|10|18025
    01100040100310| 30|0|10|14608
    01100040100310| 36|0|10|14608
    01100040100310| 115|0|10|13937
    01100040100310| 115|0|20|18041



    ---------------------------(end of broadcast)---------------------------
    TIP 5: Have you checked our extensive FAQ?



  • Bill Moran

    #2
    Re: using the "copy from" command to load tables from a

    Knepper, Michelle wrote:[color=blue]
    > Hi out there,
    >
    > I'm a first-time user of the "Copy ... From..." command, and I'm trying
    > to load a table from a text flat file.
    >
    > http://www.postgresql.org/docs/7.4/static/sql-copy.html
    >
    > I don't know if I'm using the command correctly.
    > Question: I run this command as a superuser, and the "copy from"
    > command is run like a SQL command on the command line, correct?
    > I get the following error. Any suggestions would be greatly
    > appreciated.[/color]

    The user you're logged in as doesn't matter to "copy from". It's
    the user that the Postgres server is running as that is important.
    [color=blue]
    > [mknepper@barney datafiles]$ psql -U postgres medispan
    > Welcome to psql 7.3.4, the PostgreSQL interactive terminal.
    >
    > Type: \copyright for distribution terms
    > \h for help with SQL commands
    > \? for help on internal slash commands
    > \g or terminate with semicolon to execute query
    > \q to quit
    >
    > medispan=# COPY mmw_ade_com FROM
    > '/home/mknepper/medispan/datafiles/mmwadecom.txt' WITH DELIMITER '|';
    > ERROR: COPY command, running in backend with effective uid 500, could
    > not open file '/home/mknepper/medispan/datafiles/mmwadecom.txt' for
    > reading. Errno = Permission denied (13).[/color]

    This error is pretty explicit. The server is running as UID 500, and
    UID 500 doesn't have read access to the file in question. An easy
    solution could be to get everyone read access to the file. If your
    security concerns are high, you'll have to work out something better,
    but your definately getting hung up on file permissions.

    For future reference:
    copy runs with the permissions of the server process.
    \copy runs with the permissions of the client process.

    --
    Bill Moran
    Potential Technologies
    Short term financing makes it possible to acquire highly sought-after domains without the strain of upfront costs. Find your domain name today.



    ---------------------------(end of broadcast)---------------------------
    TIP 6: Have you searched our list archives?



    Comment

    Working...