Skip to content

Formatos de Archivos Planos

Consideraciones de Formatos en Archivos Planos

Section titled “Consideraciones de Formatos en Archivos Planos”

Para garantizar una correcta interacción a través de las interfaces SFTP, los archivos compartidos deben cumplir con las siguientes especificaciones técnicas.


Ejemplo:

ProductCode|ProductName|Price|Stock|LastUpdate

Utilice el carácter de barra vertical o pipe (|)

Columna1|Columna2|Columna3

Ejemplo correcto:

PROD001|Producto A|100.50

Ejemplo incorrecto:

PROD001|Producto A (Tamaño: S|M|L)|100.50 ❌ (pipes en el texto)

Utilice \r\n (CRLF) como separador de registros

Este es el separador de línea estándar en Windows. La mayoría de los editores de texto y herramientas de exportación lo usan por defecto.


Formato: Utilice el punto (.) como separador decimal, sin separadores de miles.

✅ Correcto❌ Incorrecto
10005.5010.005,50
200.213200,213
21000.421221,000.4212

Ejemplos válidos:

Price
10005.50
200.213
21000.4212
1500
0.99

Formato: yyyyMMdd HHmmss

ComponenteFormatoDescripción
Añoyyyy4 dígitos (ej: 2025)
MesMM2 dígitos (01-12)
Díadd2 dígitos (01-31)
HoraHH2 dígitos, formato 24h (00-23)
Minutosmm2 dígitos (00-59)
Segundosss2 dígitos (00-59)

Ejemplos:

Fecha/Hora legibleFormato correcto
25 de Marzo de 2023, 15:30:2520230323 153025
1 de Enero de 2025, 00:00:0020250101 000000
31 de Diciembre de 2024, 23:59:5920241231 235959

Ejemplo en archivo:

ProductCode|LastUpdate
PROD001|20230323 153025
PROD002|20250101 120000
PROD003|20241231 235959

Se admitirán archivos CSV o TXT comprimidos en formato gzip (.gz).

Ventajas de la compresión:

  • ✅ Reduce el tiempo de transferencia
  • ✅ Ahorra ancho de banda
  • ✅ Reduce el espacio en disco
  • ✅ Archivos típicamente se comprimen en un 70-90%

Cómo comprimir:

Terminal window
# Comprimir un archivo
Compress-Archive -Path productos.csv -DestinationPath productos.csv.gz
Terminal window
# Comprimir un archivo
gzip productos.csv
# Resultado: productos.csv.gz
import gzip
import shutil
with open('productos.csv', 'rb') as f_in:
with gzip.open('productos.csv.gz', 'wb') as f_out:
shutil.copyfileobj(f_in, f_out)

Para asegurar que los archivos no se sobrescriban en diferentes procesos de carga, es obligatorio que todos los archivos contengan un sufijo que incluya la fecha y hora en su nombre.

[nombre_archivo]_[yyyyMMddHHmmss].[ext]

Componentes:

  • [nombre_archivo]: Nombre descriptivo del archivo
  • [yyyyMMddHHmmss]: Fecha y hora de generación
  • [ext]: Extensión del archivo (csv, txt, gz)
productos_20250323153025.csv
inventario_20250101120000.txt
precios_20241231235959.csv.gz
clientes_20250323140530.csv

Python:

from datetime import datetime
# Generar nombre con timestamp
timestamp = datetime.now().strftime('%Y%m%d%H%M%S')
filename = f'productos_{timestamp}.csv'
# Resultado: productos_20250323153025.csv

PowerShell:

Terminal window
# Generar nombre con timestamp
$timestamp = Get-Date -Format "yyyyMMddHHmmss"
$filename = "productos_$timestamp.csv"
# Resultado: productos_20250323153025.csv

Bash:

Terminal window
# Generar nombre con timestamp
timestamp=$(date +%Y%m%d%H%M%S)
filename="productos_${timestamp}.csv"
# Resultado: productos_20250323153025.csv

Archivo sin comprimir: productos_20250323153025.csv

Section titled “Archivo sin comprimir: productos_20250323153025.csv”
ProductCode|ProductName|Price|Stock|LastUpdate
PROD001|Laptop Dell XPS 15|1299.99|50|20250323 153025
PROD002|Mouse Logitech MX Master|89.99|200|20250323 153025
PROD003|Teclado Mecánico|149.50|75|20250323 153025
PROD004|Monitor LG 27 pulgadas|399.00|30|20250323 153025

Características:

  • ✅ Primera fila es el encabezado
  • ✅ Separador de columnas: |
  • ✅ Separador de registros: \r\n (salto de línea)
  • ✅ Precios con punto decimal
  • ✅ Fechas en formato yyyyMMdd HHmmss
  • ✅ Nombre incluye timestamp

Antes de cargar un archivo, verifique:

  • El archivo tiene encabezados en la primera fila
  • El separador de columnas es el pipe (|)
  • No hay caracteres pipe (|) en los datos de texto
  • Los números usan punto (.) como decimal
  • Las fechas están en formato yyyyMMdd HHmmss
  • El nombre del archivo incluye timestamp
  • El archivo está comprimido en .gz (si aplica)
  • El archivo está en la codificación UTF-8

Posibles causas:

  1. Falta el encabezado en la primera fila
  2. Separadores incorrectos
  3. Formato de fecha incorrecto
  4. Nombre de archivo sin timestamp
  5. Archivo corrupto o con caracteres especiales
ErrorCausaSolución
”Invalid column count”Hay pipes en los datosRemueva pipes del texto
”Invalid date format”Fecha en formato incorrectoUse yyyyMMdd HHmmss
”Duplicate file”Archivo sin timestampAgregue sufijo de fecha/hora
”Parse error”Número con formato incorrectoUse punto como decimal


Si tienes problemas con el formato de tus archivos:

  • 📧 Contacta al equipo de soporte técnico
  • 📋 Envía un archivo de ejemplo para revisión
  • 🔍 Solicita validación antes de la carga masiva