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?
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 cmdletGet-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 variablecontent
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.