con una pregunta como esa debe siempre incluir información sobre su sistema operativo y número de versión de PostgreSQL.
Su afirmación es sospechoso:
COPY data FROM 'data.dat' USING DELIMITERS ',' CSV;
DELIMITERS
se utilizó en las versiones 7.3 antes. Todavía es compatible con el fin de no romper el código anterior, pero no lo use más. La palabra clave adecuada es DELIMITER
. Y no es necesario que especifique ,
, ya que es el predeterminado para FORMAT CSV
.
Además, cito el manual here:
filename
The absolute path name of the input or output file. Windows users might need to use an E'' string and double any backslashes used in the path name.
lo tanto, su 'data.dat'
debería ser algo así como '/path/to/data.dat'
en UNIX o E'C:\\path\\to\\data.dat'
en Windows.
Para las versiones 7.3+ utilizan:
COPY data FROM '/path/to/data.dat' CSV
Para las versiones 9.0+ uso:
COPY data FROM '/path/to/data.dat' (FORMAT CSV)
Si continúa recibiendo este error:
ERROR: invalid input syntax for type numeric: CONTEXT: COPY data, line 13, column interval_2400:
Entonces, obviamente, , el archivo de origen no coincide con la estructura de tabla data
. Eche un vistazo a su archivo fuente, vaya a la línea 13 y vea qué valor hay para la columna interval_2400
. Lo más probable es que no sea numérico. Usted puede fijar el archivo de origen oadaptar la definición de la tabla:
ALTER TABLE data ALTER COLUMN interval_2400 TYPE text;
o lo que escribir es más apropiado. Podría ser interval
, a juzgar por el nombre.
Y el error es? –
Eso no es historia completa. De acuerdo con [documentación] (http://www.postgresql.org/docs/8.3/static/sql-copy.html) y mi caso de verificación de arriba funciona bien bajo cualquier PostgreSQL moderno (valor vacío sin comillas en modo CSV). Tal vez usted no tiene modificador NULL o número inválido de comas? –
ERROR: sintaxis de entrada no válida para tipo numérico: CONTEXTO: datos COPY, línea 13, columna interval_2400: – ugh