Я пишу отличный скрипт, который должен копировать данные из файла в таблицу (база данных Postgres).
Я мог бы использовать команду SQL COPY, но для этого требуется, чтобы скрипт запускался как суперпользователь (это не вариант, который я могу использовать). Другой альтернативой является использование \ COPY, которая является командой psql. Но psql - это инструмент командной строки для PostgresSQL. Есть ли способ вызвать \ COPY из скрипта Groovy?
Я попробовал следующее:
// groovy method to populate table
populateTable( tableName, filePath ) {
def command = """psql -U<database name>"""
def proc = command.execute()
proc.waitFor()
command = """ \\COPY $tableName FROM '$filePath' WITH DELIMITER AS ','"""
proc = command.execute()
proc.waitFor()
}
В приведенном выше коде я пытаюсь выполнить вход в командную строку psql, а затем выполнить команду \ COPY, но я получаю следующую ошибку:
java.io.IOException: Cannot run program "\COPY": java.io.IOException: error=20, Not a directory
Просто интересно, можно ли вызвать \ COPY из скрипта? Если нет, есть ли другой способ массового копирования данных из файла в таблицу? Это огромный файл, и копирование строка за строкой будет очень неэффективным.
Большое спасибо заранее за вашу помощь.