es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Postgresql: leer el contenido del archivo e insertarlo en la columna muestra error ‘cat’ no se reconoce como un comando interno o externo,

Tengo 2 archivos. 1) es txt.sql y 2) es post.html. Estoy intentando insertar en mi tabla de PostgreSQL utilizando un script .sql. He utilizado el CMD de Windows, PowerShell y mi IDE (también vscode).

Aquí está el código de mi script txt.sql

\set content cat post.html
INSERT INTO posts (
post_name,
post_date,
title,
body
)
VALUES(
‘hello_world’,
‘2021-12-20’,
‘Hello World’,
:’content’
);

Y aquí está el código de mi post.html

¡Hola mundo!

Gracias por visitar mi blog.

Cuando ejecuté el siguiente comando en la base de datos myapp.

\i txt.sql

Obtuve los siguientes resultados e inserté los datos sin contenido.

‘cat’ no se reconoce como un comando interno o externo,
programa o archivo por lotes ejecutable.
INSERT 0 1

Creo que el comando de shell cat solo es válido para Unix y no para Windows. ¿Puedes ayudarme con otra solución para leer datos de un archivo e insertarlos en una columna de una tabla en Windows psql?

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Como solución para los usuarios de Windows, en lugar de utilizar el comando cat en el script para leer datos del archivo HTML, puedes utilizar el cmdlet Get-Content en PowerShell para obtener el contenido del archivo de la siguiente manera:

    \set content :temp
    SELECT :’content’ AS content \g temp.html
    \set content Get-Content temp.html -Raw
    DELETE FROM temp.html

    Este comando de PowerShell creará un archivo HTML temporal, recuperará su contenido, lo asignará a la variable content y luego eliminará el archivo temporal. Puedes utilizar la variable content en tu script SQL, que ahora se verá así:

    INSERT INTO posts (
    post_name,
    post_date,
    title,
    body
    )
    VALUES (
    ‘hello_world’,
    ‘2021-12-20’,
    ‘Hola Mundo’,
    :’content’
    );

    Este script insertará los datos del archivo post.html en la columna ‘body’ de la tabla ‘posts’.

    Además, puedes utilizar el comando de barra invertida S (mayúscula S) en lugar del comando \i para ejecutar el script SQL en psql de la siguiente manera:

    myapp-# \S txt.sql

    Este comando ejecutará el script SQL y también mostrará los comandos que se están ejecutando en la consola.

Comments are closed.