Я пытаюсь импортировать таблицу из Postgresql в файл Parquet на HDFS.Sqoop + Postgresql: как предотвратить котировки вокруг имени таблицы
Вот что я делаю:
sqoop import \
--connect "jdbc:postgresql://pg.foo.net:5432/bar" \
--username user_me --password $PASSWORD \
--table foo.bar \
--target-dir /user/me/bar \
--as-parquetfile
и я получаю
INFO manager.SqlManager: Executing SQL statement: SELECT t.* FROM "foo.bar" AS t LIMIT 1
ERROR manager.SqlManager: Error executing statement: org.postgresql.util.PSQLException: ERROR: relation "foo.bar" does not exist
SELECT t.* FROM "foo.bar" AS t LIMIT 1
не работает на самом деле, но SELECT t.* FROM foo.bar AS t LIMIT 1
делает. Поэтому проблема заключается в том, что имя таблицы цитируется. Я попытался поставить аргументы --table
разными способами, но без эффекта.
Как мне это сделать?
EDIT
Как вы документы, связанные состояние, есть --schema
аргумент. По некоторым причинам он не упоминается в sqoop help import
.
Другая странная вещь, что
--table bar --schema foo
все еще не работает, но
--table bar -- --schema foo
делает.
В любом случае, он работает сейчас. Спасибо, что связали соответствующий раздел документов!
Документы объясняют это следующим образом: 'Если аргумент - это заданные в командной строке, последующие аргументы отправляются непосредственно в базовый инструмент. Например, следующее настраивает набор символов, используемый mysqldump: 'Итак, кажется, что -schema предоставляется pg_dump: http://www.postgresql.org/docs/current/static/app-pgdump.html И это означает вы можете использовать остальные элементы управления pg_dump ... Возможно. –