Скопировать содержимое файла в таблицу Postgres в ПВХ - PullRequest
0 голосов
/ 05 апреля 2020

Изо всех сил пытаюсь обернуть мой мозг вокруг этого ...

Поэтому мне нужно выполнить команду Postgres COPY в программе PHP, как показано ниже:

COPY _data_20200404_193855 FROM '/mnt/files/imports/CopyFlatFile.csv.tab' DELIMITER E'\t' CSV HEADER

/mnt/files/xls-imports/CopyFlatFile.csv.tab - это местоположение PV C, но Postgres Pod думает, что это местоположение в модуле, поэтому говорит, что не может найти файл.

Я могу переместить вручную файл из PV C и в Postgres Pod с комбинацией scp и kubectl cp, и команда отлично выполняется после копирования его в pgAdmin и его запуска.

Не идеально метод и не очень эффективный, так как я хотел бы, чтобы программа справлялась с ним.

Любые предложения о том, как справиться с этим?

В худшем случае я переписываю его для создания массивного INSERT INTO заявление, но не уверен, что сможет обработать столько данных, которые хранятся в памяти. Если нет, я просто разбью его на более мелкие куски. Уф ...

Ответы [ 2 ]

1 голос
/ 05 апреля 2020

Похоже, у меня даже не было хранилища файлов PV C, подключенного к Postgres Deployment ... сделал это, и теперь он работает. Надзор с моей стороны.

Был ...

...
          volumeMounts:
            - name: postgres-storage
              mountPath: /var/postgresql
      volumes:
        - name: postgres-storage
          persistentVolumeClaim:
            claimName: postgres-storage
...

Поэтому я изменил его на:

...
            - mountPath: /var/postgresql
              name: postgres-storage
            - mountPath: /mnt/files/xls-imports
              name: file-storage
              subPath: xls-imports
      volumes:
        - name: postgres-storage
          persistentVolumeClaim:
            claimName: postgres-storage
        - name: file-storage
          persistentVolumeClaim:
            claimName: file-storage
...
0 голосов
/ 05 апреля 2020

Один из возможных вариантов - подключить одну и ту же внешнюю файловую систему (например, NFS, CephFS или соответствующие версии SaaS, например, AWS EFS) ко всем модулям php и PostgreSQL в режиме доступа ReadWriteMany . и использовать его как общий временный каталог для всех модулей.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...