odbc를 통해 데이터베이스에서 큰 열을 다운로드하는 중varbinary(MAX)인 SQL 열이 있습니다.JMP의 열 너비가 65536인 것 같아서 전체 열을 다운로드할 수 없습니다. ODBC만의 문제는 아닌 것 같습니다.
현재 저는 하위 문자열이 모두 비어 있을 때까지 잡고 배열로 연결하여 한 번에 하나씩 수행하고 있습니다.
이것은 영원히 걸립니다.
이것을 최적화하는 방법에 대한 제안이 있는 사람이 있습니까?python/sqlcmd/etc를 사용하지 않으려고 합니다. 얼룩을 직접 잡아야 합니다(JMP 제외).
데이터 접근Re: odbc를 통해 데이터베이스에서 큰 열을 다운로드하는 중응, 응.매우 감사.
Re: odbc를 통해 데이터베이스에서 큰 열을 다운로드하는 중이 제한 사항은 참고하세요. 하다 JMP16.1에서는 제거된 것 같습니다. 감사해요!
Re: odbc를 통해 데이터베이스에서 큰 열을 다운로드하는 중아, 안됐다.그럴 것이다. 감사해요.
Re: odbc를 통해 데이터베이스에서 큰 열을 다운로드하는 중안녕하세요, @vince_faller .
이 문제는 JMP 16.1에서 해결되었어야 합니다. 16.1에서 테스트했지만 여전히 동일한 동작이 나타나는 경우 지원팀에 이메일을 보내주세요.
Re: odbc를 통해 데이터베이스에서 큰 열을 다운로드하는 중또 안녕 @Dahlia_Watkins , 해당 기능 요청이 관심을 끌었다면 어떤 소식이 있나요?
Re: odbc를 통해 데이터베이스에서 큰 열을 다운로드하는 중감사해요 @Dahlia_Watkins
인터넷 영역에 있는 사람이라면 거래에서 크기를 강제로 제공하는 방법이 있는지 알고 있습니까?
현재 구현은 엄청나게 느리고(65536 그룹을 구독하고 가장 긴 것이 처리될 때까지 함께 연결) 드라이버를 변경할 수 없습니다. 그래서 나는 약간의 피클에 빠졌습니다.
Re: odbc를 통해 데이터베이스에서 큰 열을 다운로드하는 중당 브라이언_분 이 동작은 이러한 드라이버가 열 길이를 다시 조정하지 않기 때문에 발생합니다. 이후 JMP는 기본 길이를 다음과 같이 설정합니다. 65536 이 데이터가 제공되지 않을 때.
JMP가 이 데이터를 처리할 수 있으므로 이 값을 늘리도록 하는 새로운 기능 요청을 추가했습니다.
그 동안에는 SQL Server(네이티브)를 사용하는 것이 작동하는 것 같습니다.
Re: odbc를 통해 데이터베이스에서 큰 열 데이터베이스를 다운로드하는 중네. 정확히 동일한 연결 문자열을 사용합니다.Re: odbc를 통해 데이터베이스에서 큰 열 데이터베이스를 다운로드하는 중아, 알았어. VARCHAR(MAX)를 사용하고 있으니 열 길이가 없을 수도 있나요?
불행하게도 블록을 가져와도 작동하지 않습니다.
Re: odbc를 통해 데이터베이스에서 큰 열 데이터베이스를 다운로드하는 중@vince_faller ,
Python과 JMP에 동일한 ODBC 드라이버를 사용하고 있습니까?
스탠
Re: odbc를 통해 데이터베이스에서 큰 열 데이터베이스를 다운로드하는 중다음을 사용해 볼 수 있나요?
Preferences( ODBC Disable Block Fetch( 1 ) );
ODBC 드라이버가 열 길이를 보고하지 않는 경우가 있습니다.
SQL Server는 블록 페치(한 번에 한 행을 수행하는 것보다 훨씬 더 효율적임)를 지원하는 드라이버 중 하나이지만 드라이버에서 열 길이를 보고하지 않는 경우 기본값인 65536이 사용됩니다.
Re: odbc를 통해 데이터베이스에서 큰 열 데이터베이스를 다운로드하는 중이것은 무슨 일이 일어나고 있는지 이해하기 위해 테스트하는 능력을 넘어서는 것입니다.
@briancorcoran ?
Re: odbc를 통해 데이터베이스에서 큰 열 데이터베이스를 다운로드하는 중@Jeff_Perkinson
이것에 대해 더 자세히 살펴보면 이 동작을 설명할 수 없습니다.Python을 통해 정확히 동일한 테이블과 연결 문자열에서 값을 가져올 수 있습니다.어떤 이유로든 JMP는 65537에 도달하자마자 열을 비웁니다.
Names default to here(1);
driver = "ODBC Driver 17 for SQL Server"; // using SQL Server
server = "localhost";
database = "Test";
username = "sa";
password = "REDACTED";
cxn_string = "DRIVER="||driver||";SERVER="||server||";UID="||username||";PWD="||
password||";Database="||database;
cxn = create database connection(cxn_string);
executesql(cxn,
"
CREATE TABLE [dbo].[LargeChar](
[LargeCharID] [bigint] IDENTITY(1,1) NOT NULL,
[SomeBigChar] [varchar](MAX) NOT NULL,
CONSTRAINT [PK_Blob] PRIMARY KEY CLUSTERED
(
[LargeCharID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
"
);
executeSQL(cxn,
"INSERT INTO [LargeChar]
VALUES('"||REPEAT("A", 100000)||"')"
);
dt_download = executeSQL(cxn,
"SELECT SomeBigChar
, SubString(Convert(VARCHAR(MAX), SomeBigChar), 1, 65536) AS Char65536 -- this works
, SubString(Convert(VARCHAR(MAX), SomeBigChar), 1, 65537) AS Char65537 -- this doesn't
FROM [LargeChar]",
"This should work?"
);
show(length(dt_download:SomeBigChar[1]), // full text doesn't show
length(dt_download:Char65536[1]), // text that is only 65536 shows
length(dt_download:Char65537[1]) // text that is one higher? nope
);
//execute SQL(cxn, "DROP TABLE [LargeChar]");
close database connection(cxn);
//Python script returns
/*
0 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA...
Name: SomeBigChar, dtype: object
0 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA...
Name: Char65536, dtype: object
0 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA...
Name: Char65537, dtype: object
*/
내가 놓친 것이 있습니까?아니면 파이썬 아래에 몇 가지 기능을 추가하고 있을 수도 있습니다.
*편집* 너무 많은 편집을 해서 죄송합니다.각각에 대해 이메일을 받지 않기를 바랍니다.
Re: odbc를 통해 데이터베이스에서 큰 열 데이터베이스를 다운로드하는 중매우 관련성이 높습니다.내 잘못이야.그러면 이상한 일이 일어나고 있습니다.
감사해요 @Jeff_Perkinson ,
Re: odbc를 통해 데이터베이스에서 큰 열 데이터베이스를 다운로드하는 중
@vince_faller 썼다:
JMP의 열 너비가 65536인 것 같아서 전체 열을 다운로드할 수 없습니다.ODBC만의 문제는 아닌 것 같습니다.
귀하의 실제 문의에 대해 즉각적인 생각은 없지만 위의 진술을 명확히 하고 싶습니다. JMP에서 문자 열의 최대 너비는 65536보다 훨씬 큽니다.
New Table( "untitled 15",
Add Rows( 1 ),
New Column( "repeat",
Character,
"Nominal",
Formula( Repeat( "a", 128000000 ) ),
),
New Column( "length",
Numeric,
"Continuous",
Format( "Best", 12 ),
Formula( Length( :repeat ) ),
)
)
나는 이 세부 사항이 귀하의 속도/쿼리 문제를 해결하는 것과 관련이 없다고 확신하며 귀하가 의미하는 바를 오해했을 수도 있습니다. 열 너비 .