Облако SQL - PostgreSQL - как импортировать файл .csv? - PullRequest
0 голосов
/ 21 января 2019

У меня есть экземпляр Cloud SQL, на котором запущен PostgreSQL, и файл .csv на моем локальном компьютере.

Я создал пользователя и базу данных.Я вошел в систему как этот пользователь с этой базой данных и создал таблицу, соответствующую моему файлу .csv.

У меня есть файл .csv и файл import.sql со следующими данными:

COPY <my-table-name>
FROM 'C:\<path-to>\data.csv'
WITH (FORMAT csv);

Когда я запускаю команду psql:

psql -f import.sql <connection string>

, я возвращаюсь:

psql:./import.sql:3: ERROR:  must be superuser to COPY to or from a file
HINT:  Anyone can COPY to stdout or from stdin. psql's \copy command also works for anyone.

Я пытался сделать своего пользователя «суперпользователем», выполнив его как postgres, но я получаю это:

psql:./add-superuser.sql:1: ERROR:  must be superuser to alter superusers

Показывает всех пользователей, показывает:

postgres-> \du
 cloudsqladmin     | Superuser, Create role, Create DB, Replication, Bypass RLS 
 cloudsqlagent     | Create role, Create DB                                     | {cloudsqlsuperuser}
 cloudsqlreplica   | Replication                                                | {}
 cloudsqlsuperuser | Create role, Create DB                                     | {}
 <my-user>         | Create role, Create DB                                     | {cloudsqlsuperuser}
 postgres          | Create role, Create DB                                     | {cloudsqlsuperuser}

postgres - это cloudqlsuperuser, но не «Superuser».Как импортировать этот файл .csv?

Я не знаю, как войти в систему / получить доступ от имени пользователя cloudsqladmin или предоставить роль, позволяющую импортировать файл.Мне очень нужна срочная помощь.

Документация Google в этой области Cloud Sql с Postgres ужасна.Он посылает меня повсюду и очень сбивает с толку.

Ответы [ 2 ]

0 голосов
/ 24 января 2019

PostgreSQL - это управляемый сервис, поэтому у вас есть некоторые ограничения в отношении пользователей.Вы не можете грандиозные разрешения SUPERUSER.На данный момент вы можете импортировать файл CSV из консоли.

Чтобы импортировать файл в базу данных CloudSQL (PostgreSQL):

Сначала убедитесь, чточто таблица существует в базе данных.Подключитесь к своему экземпляру CloudSQl (PostgreSQL).Запустите команду SELECT * FROM pg_catalog.pg_tables;, чтобы получить список всех таблиц.Если вы нашли свою таблицу в списке, используйте то же имя для Table при импорте данных в базу данных.

  1. Загрузите файл CSV в папку корзины

  2. Найдите экземпляр CloudSQL (PostgreSQL) на странице SQL и щелкните по имени экземпляра.

  3. На странице Instance details нажмите Import.

  4. В Cloud Storage file выберите файл CSV из корзины.

  5. В Format of import выберите CSV

  6. В table введите имя таблицы, в которую вы хотите импортировать данные.

  7. Нажмите Import, и данные будут импортированы.

Я попробовал описанные выше методы и успешно загрузил пользовательский файл CSV в CloudSQL (PostgreSQL).

0 голосов
/ 21 января 2019

COPY в любом случае не будет делать то, что вы хотите, потому что он читает файл с сервера (сервер не имеет доступа к файлам на клиентском компьютере).

Вы можете использовать psql \copy для этого, который использует COPY ... FROM STDIN за кадром.

...