你好,
我正在尝试将 base64 编码的数据导入 JMP,但它似乎在 255 个字符处截断数据。包含 base64 字符串的数据库列的长度为 546,168 个字符。有没有办法增加 jmp 表列的字符限制?
谢谢,
杰基
这是数据库还是 CSV 导入?
如果是 SQL 数据库,这些可能会有用。
从数据库到 JMP 的字节数组图像
通过 odbc 从数据库下载大列
如果这是 CSV 数据,您如何打开它?共享 open() 语句或对话框可能会有所帮助。还有来自错误导入的源脚本。JMP 应该能够读取非常大的字符串;您如何确定导入字符串的长度?
这是使用 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(a lot of) base 64 data in middle column(a lot of) base 64 data in middle column中间列有(很多)base 64 数据
源脚本如下所示
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" )
)
)
我猜你会想使用

我相信它可以处理多达 20 亿个字符的输入流。请查看脚本索引以获取示例。
谢谢@Craige_Hales !
我正在从数据库服务器查询 JMP。
我尝试将其转换为十六进制,但它只能读取最多 255 个字符
询问:
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" );
以下是我最终得到的结果:

JMP 读取限制到 255 个字符
“89504E470D0A1A0A0000000D4948445200000DAC000007D0080600000094E2F9EB0000200049444154785EECDD07905545DA3FE0171024A818565D3388A262465D54CC3960045D54740D8062C29C3127CC8B8A39E79CF39A139815B3A288620EA0E420FFEABB9FFB37CCBD3373A7679881A7ABBEFAB68AD36F773FA7E7CE19E”
我已经附加了我想在 jmp 表中查询的原始十六进制值。
欢迎,哪一部分对你有用?感谢您分享任何细节。每个人都在数据库连接方面遇到困难。