Escribir en una base de datos SQL<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />La conexión SQL en JMP es excelente para leer datos. ¿Alguien la está usando para escribir datos?
Tengo un procedimiento almacenado que recopila datos y los escribe en una nueva tabla. Utiliza una segunda tabla para leer la lista de parámetros y saber qué datos recopilar. Puedo leer esta tabla con JMP pero escribir en ella no es nada fácil:
- las columnas de texto se guardan como en JMP nvarchar con espacios en blanco al final; esto requiere una función de recorte de espacios en blanco para usar las columnas de texto cargadas
- las fechas se descargan correctamente pero el controlador OBDC arroja un error si intenta escribirlas como fechas. Puede solucionar esto convirtiendo primero la columna a formato de texto y luego convirtiéndola nuevamente en uso, pero es bastante molesto.
Actualmente utilizo un procedimiento almacenado para copiar los datos correctos de la tabla creada por JMP a la tabla maestra, lo que supera las limitaciones indirectamente.
Mi pregunta: ¿existe una mejor manera de usar JSL/SQL juntos para leer una tabla, agregar nuevas filas y luego escribir las modificaciones/enmiendas en el servidor?
Re: Escribir en una base de datos SQLgracias @vince_faller
He usado esto y también logro ampliarlo ejecutándolo en un bucle. Por alguna razón, tenía un límite de aproximadamente 35 000 filas a la vez, así que simplemente hice un bucle for para leer 25 000 filas a la vez e ingresarlas en la base de datos.
Re: Escribir en una base de datos SQLHola,
Gracias por compartir.
A continuación se muestra mi caso y agradezco la ayuda.
1. el nombre de la base de datos SQL en el servidor: SQL_machine_yield_db
adjunto SQL_machine_yield_db.jmp cuando se actualiza desde la conexión de base de datos.
2. en la base de datos, hay 8 columnas
3. los datos de la tabla "new_and_update_yield.jmp
Pregunta: ¿cómo utilizar jsl/sql para actualizar new_and_yield.jmp a SQL_machine_yield_db en el servidor?
Atentamente
Re: Escribir en una base de datos SQLSupongo que estás consultando cuál es la tabla de datos con alguna declaración WHERE y no solo obteniendo la tabla completa.
Si por casualidad estás tirando toda la mesa,
dt << Guardar base de datos( dbc,
"dbo.falso",
Reemplazar
);
Trabajaría. De lo contrario, NO hagas esto.Ya que eliminará toda la información de su tabla que no esté en su consulta JMP. ¿Creo que esto está en JMP 12+?
De lo contrario, puede dividirlo si tiene una identificación o no.Realice una actualización si tiene una identificación, insértela si no la tiene.Probablemente sería mejor bloquear y ocultar la columna de ID.Sólo estoy escupiendo aquí, pero creo que debería funcionar.
Re: Escribir en una base de datos SQLTengo la sensación de que desea que la base de datos se 'actualice automáticamente' cuando se realizan ediciones en la tabla JMP (sin el botón 'Actualizar', como tal). Es posible que puedas hacer esto usando 'Suscribir()'. Consulte 'Ayuda > Índice de secuencias de comandos' para ver ejemplos.
Re: Escribir en una base de datos SQLGracias por ese ejemplo. Sabía que podía escribir SQL sin formato y ejecutarlo, por ejemplo, INSERTAR, ACTUALIZAR y REEMPLAZAR o ejecutar un procedimiento almacenado y pasarle parámetros. Estaba buscando, por ejemplo, SQL/JSL donde un usuario puede abrir una tabla de base de datos existente en JMP. Para el usuario final, parece ser solo una tabla JMP almacenada en una computadora remota. La diferencia es que cualquier cambio que hicieran en esa tabla JMP podría cargarse en la base de datos original.
Ahora puedo ver cómo puedo escribir código JSL para verificar si se agregaron nuevas filas a la tabla y luego usar INSERT INTO para escribirlas en la base de datos (siempre que se puedan controlar las discrepancias de tipos de datos). ¿Alguna idea de cómo realizar un seguimiento de las ediciones de las filas existentes?
Re: Escribir en una base de datos SQLEsto funcionó bien para mi.Probablemente estoy entendiendo mal tu pregunta.
dbc = Crear conexión de base de datos ( "CONDUCTOR=SERVIDOR SQL;SERVIDOR=base_de_datos_falsa;Base de datos=Test_DB" );
retornosql = Ejecutar SQL (dbc,
"INSERTAR EN [Test_DB].[dbo].[falso]
VALORES
('PruebaSQLinsertar'
,1
,1
,'JMP'
,14.14
,14.14
,1
,'JMP'
,'JMP'
,'JMP'
,14
,14
)"
);
cerrar la conexión a la base de datos (dbc);

Supongo que su problema con las fechas se debe a que JMP en realidad almacena las fechas como segundos.Puede hacer un MDYHMS() en su fecha en JMP o agregar una fecha (JMPdate, s, '1-1-1970') en SQL.
¿Alguna información más que puedas dar?Puedo extraer datos y agregar filas a la tabla JMP y luego actualizar la tabla SQL, pero sin contexto simplemente omitiría la extracción de datos e insertaría directamente en SQL (o haría que SQL hiciera la adición y dejara JMP fuera por completo).
Re: Escribir en una base de datos SQLLo siento, no puedo ayudar, soy completamente novato en este tema, pero también agradecería cualquier comentario que alguien tenga sobre cómo escribir en bases de datos.