Я пытаюсь выполнить импорт и экспорт данных csv с помощью postgresql (где база данных находится на удаленном хосте). Обычно я бы использовал команду psql
для выполнения \copy <table> from <local path> ...
и \copy <table> to <local path> ...
, но мне нужно иметь возможность сделать это через Go, где у меня нет доступа к оболочке или системам, на которых не установлен psql.
Ожидается, что сами данные будут довольно легкими (возможно, < 2 МБ данных вместе), поэтому я стараюсь не реализовывать какие-либо структуры/схемы отслеживания столбцов в таблицах. При импорте в БД я хочу, чтобы библиотека/код выводила схему таблицы и помещала данные в таблицы.
Есть предложения, как это реализовать? Я не уверен, что любой из Go database/sql
или pgx
или pq
позволяет это без возможности указывать столбцы. Есть какие-нибудь советы по этому поводу?
Изменить:
В итоге я использовал https://github.com/joho/sqltocsv для экспорта БД, что довольно просто, и мне не нужно определять какие-либо схемы/структуры.
У меня нет кода, но я попробовал gorm
и понял, что мне нужно определить для него некоторую структуру/схему.
Можете ли вы поделиться с нами тем, что вы пробовали до сих пор, и с какими проблемами вы столкнулись? Кроме того, вы говорите, что пытаетесь реализовать структуры, но не можете указать столбцы, что подразумевает, что вы не знаете структуру, можете ли вы это пояснить? Вы знаете структуру данных или нет?
Вы заглядывали в библиотеку горма?
Отвечает ли это на ваш вопрос? Массовая вставка из csv в postgres с использованием golang без использования цикла for
@mkopriva, правильно, что я не знаю структуру. Я просто знаю, что мне нужно будет экспортировать кучу данных и повторно импортировать их (в те же базы данных/таблицы). Очевидно, я мог бы использовать дамп БД, но данные там сложнее анализировать. Пока все, что у меня есть, в конечном итоге использует структуры и схемы, определенные для моих таблиц.
@Гауранга. У меня есть, и если я что-то не пропустил, мне нужно, чтобы в моем коде была определена какая-то схема. В идеале я хотел бы иметь возможность делать что-то простое, как команды psql.
@ГуставоКавамото. Это помогает, хотя код pgx не работает, возможно, дело в версии.