odbc経由でデータベースから大きな列をダウンロードするvarbinary(MAX) の sql 列があります。JMPのカラム幅は65536のようで、カラム全体をダウンロードできません。 ODBC のみの問題ではないようです。
現在、部分文字列がすべて空になるまで部分文字列を取得して配列に連結することで、一度に 1 つずつ実行しています。
これには永遠にかかります。
これを最適化する方法について何か提案はありますか?python/sqlcmd/etc の使用を避けようとしています。ブロブを直接取得します (JMP を回避します)。
スクリプティングRe: odbc 経由でデータベースから大きな列をダウンロードするうんうん。大変感謝いたします。
Re: odbc 経由でデータベースから大きな列をダウンロードするこの制限に注意してくださいするJMP16.1で削除されたようです。ありがとう!
Re: odbc 経由でデータベースから大きな列をダウンロードするああ、悪い。しましょう。 ありがとう。
Re: odbc 経由でデータベースから大きな列をダウンロードするこんにちは、 @vince_faller .
この問題は、JMP 16.1 で対処されているはずです。 16.1 でこれをテストしても同じ動作が見られる場合は、サポートにメールしてください。
Re: odbc 経由でデータベースから大きな列をダウンロードするやあまた会ったね@ダリア_ワトキンス、その機能要求が何らかの牽引力を得た場合、何かニュースはありますか?
Re: odbc 経由でデータベースから大きな列をダウンロードするありがとう@ダリア_ワトキンス
インターネットランドの誰もが、トランザクションからサイズを強制的に指定する方法があるかどうかを知っていますか?
私の現在の実装は非常に遅く (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 は、ブロック フェッチをサポートするドライバーの 1 つです (一度に 1 行を取得するよりもはるかに効率的です) が、列の長さがドライバーによって報告されない場合は、既定値の 65536 が使用されます。
Re: odbc 経由でデータベースから大きな列データベースをダウンロードするこれは、何が起こっているのかを理解するためにテストする私の能力を超えています。
@ブライアンコーコラン?
Re: odbc 経由でデータベースから大きな列データベースをダウンロードする@ジェフ・パーキンソン
これをさらに詳しく調べると、この動作を説明できません。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
*/
私が見逃しているものはありますか?または、Python の下にいくつかの機能が追加されている可能性があります。
*編集* 何度も編集してすみません。それぞれにメールが届かないことを願っています。
Re: odbc 経由でデータベースから大きな列データベースをダウンロードする非常に関連性があります。私の悪い。その時、奇妙なことが起こっています。
ありがとう@ジェフ・パーキンソン、
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 ) ),
)
)
この詳細は、速度/クエリの問題の解決には関係ないと確信しており、あなたの意図を誤解している可能性があります列幅.