Hola,
Estoy intentando importar datos codificados en base64 a JMP, pero parece que los datos se truncan a 255 caracteres. La columna de la base de datos que contiene la cadena base64 tiene una longitud de 546.168 caracteres. ¿Hay alguna manera de aumentar el límite de caracteres para la columna de la tabla jmp?
Gracias,
Jackie
¿Es esta una base de datos o una importación CSV?
Si es una base de datos SQL, estas podrían resultar útiles.
Imagen de matriz de bytes de la base de datos a JMP
descargar columnas grandes de la base de datos a través de odbc
Si se trata de datos CSV, ¿cómo los abres? Compartir la declaración o el diálogo open() puede ayudar. También el script fuente de la importación incorrecta. JMP debería poder leer cadenas muy grandes; ¿Cómo determinaste la longitud de la cadena importada?
Aquí hay una prueba rápida usando open(...csv)
x = "1," || Encode64 Blob( Char To Blob( Repeat( "the quick brown fox", 30000 ) ) ) || ",3"; Show( Length( x ) );
y = "4," || Encode64 Blob( Char To Blob( Repeat( "jumps over the lazy", 30000 ) ) ) || ",6"; Show( Length( y ) );
file = Save Text File( "$temp/x.csv", "a,b,c\!n" || x || "\!n" || y );
dt = Open( file );
Show(
JMP Version(),
Length( dt:b[1] ),
Length( dt:b[2] ),
Blob Peek( Decode64 Blob( dt:b[1] ), 0, 38 ),
Blob Peek( Decode64 Blob( dt:b[2] ), 0, 38 )
);
/*
Length(x) = 760004;
Length(y) = 760004;
JMP Version() = "17.2.0";
Length(dt::b[1]) = 760000;
Length(dt::b[2]) = 760000;
Blob Peek(Decode64 Blob(dt::b[1]), 0, 38) = Char To Blob( "the quick brown foxthe quick brown fox", "ascii~hex" );
Blob Peek(Decode64 Blob(dt::b[2]), 0, 38) = Char To Blob( "jumps over the lazyjumps over the lazy", "ascii~hex" );
*/
(a lot of) base 64 data in middle column(a lot of) base 64 data in middle column(a lot of) base 64 data in middle column(a lot of) base 64 data in middle column(a lot of) base 64 data in middle column(a lot of) base 64 data in middle column(a lot of) base 64 data in middle column(a lot of) base 64 data in middle column(a lot of) base 64 data in middle column(a lot of) base 64 data in middle column(a lot of) base 64 data in middle column(a lot of) base 64 data in middle column(a lot of) base 64 data in middle column(a lot of) base 64 data in middle column(muchos) datos de base 64 en la columna del medio
el script fuente se ve así
Open(
"$TEMP/x.csv",
columns(
New Column( "a", Numeric, "Continuous", Format( "Best", 12 ) ),
New Column( "b", Character, "Nominal" ),
New Column( "c", Numeric, "Continuous", Format( "Best", 12 ) )
),
Import Settings(
End Of Line( CRLF, CR, LF ),
End Of Field( Comma, CSV( 1 ) ),
Strip Quotes( 0 ),
Use Apostrophe as Quotation Mark( 0 ),
Use Regional Settings( 0 ),
Scan Whole File( 1 ),
Treat empty columns as numeric( 0 ),
CompressNumericColumns( 0 ),
CompressCharacterColumns( 0 ),
CompressAllowListCheck( 0 ),
Labels( 1 ),
Column Names Start( 1 ),
First Named Column( 1 ),
Data Starts( 2 ),
Lines To Read( "All" ),
Year Rule( "20xx" )
)
)
Sospecho que querrás usar

Creo que puede manejar un flujo de entrada de hasta 2 mil millones de caracteres. Consulte el índice de secuencias de comandos para ver ejemplos.
¡Gracias @Craige_Hales !
Estoy consultando desde el servidor de la base de datos a JMP.
Intenté convertirlo a hexadecimal, pero solo lee hasta 255 caracteres.
Consulta:
ODBC = Create Database Connection( "DSN=xxx;" );
SQL= Eval Insert(
"SELECT hex(plot) AS HexadecimalPlot
FROM db.main.plot_table;");
dt_diesort2 = Execute SQL( ODBC, SQL, "Pic_table" );
Esto es con lo que termino:

JMP lee límites hasta 255 caracteres
"89504E470D0A1A0A0000000D4948445200000DAC000007D0080600000094E2F9EB0000200049444154785EECDD07905545DA3FE0171024A818565D3388A262465 D54CC3960045D54740D8062C29C3127CC8B8A39E79CF39A139815B3A288620EA0E420FFEABB9FFB37CCBD3373A7679881A7ABBEFAB68AD36F773FA7E7CE19E"
Adjunté los valores hexadecimales originales que quiero consultar en la tabla jmp.
Muchas gracias por la solución.
Bienvenido, ¿y qué parte te funcionó? Gracias por cualquier detalle que puedas compartir. Todo el mundo tiene problemas con las conexiones de bases de datos.