We were trying to use the \COPY command in Knex.raw. We connect via heroku/postgres and the \COPY is the only way to bulk import data as we don't have superuser rights. The backslash before the copy is being removed or multiplied depending on what you try.
So far we've tried to escape it using 1. \b 2. \ 3. String.fromCharCode(92) 4. concatenation
The full function we're using is...
knex.raw("\COPY tablename (column1, column2, ...columnN) FROM STDIN " + csvValues).then(function(response){
console.log('the response from the copy', response);
});
We've tested this exact function within our pg:psql environment and it works perfectly. If you know of a better way of doing this, please let us know!
Regards, Brandon
\copyis a psql (client) command, which wraps Postgres'sCOPY(server). It sounds like perhaps you're trying to combine the two, and that's where the problem is.Since knex.js is a query builder, it wouldn't know about
\copy--\COPYwould not be valid SQL to use in a client scenario.You mention that you don't have superuser access, which, if you want to reference a file, is required for
COPY.If you're unable to use
COPYfor that reason, you would instead need to use psql and leverage its\copycommand, for which knex.js would likely not be the tool to use. Rather, you would need to access it via the invocation of a shell command.Perhaps this batch import of data could be done outside of Javascript entirely? i.e. via a bash script that used psql directly?