問題タブ [nexusdb]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
sql - SQLの質問:レコードを除外する
Itemテーブル、Categoryテーブル、およびキーのペアである多対多のItemCategoryテーブルを含むデータベース(NexusDB(おそらくSQL-92準拠))があります。ご想像のとおり、アイテムは複数のカテゴリに割り当てられています。
すべてのエンドユーザーに、次のすべてのアイテムを選択してもらいたい
ItemID | カテゴリ
ID--------------------------------
01 | 01
01 | 02
01 | 12
02 | 01
02 | 02
02 | 47
03 | 01
03 | 02
03 | 14
など...
カテゴリX、Y、およびZに割り当てられているが、カテゴリPおよびQには割り当てられていないすべてのItemIDを選択できるようにしたい。
たとえば、上記のデータの例では、カテゴリ01または02に割り当てられているが、12ではないすべてのアイテムを取得したいとします(アイテム02および03を生成します)。次のようなもの:
SELECT ItemID WHERE(CategoryID IN(01、02))
...そしてそのセットからSELECTItemIDWHERE NOT(CategoryID = 12)を削除します
これはおそらくかなり基本的なSQLの質問ですが、現時点では困惑しています。どんな助けでもありがたいです。
java - JavaからNexusDBにアクセスする
Javaを使用してNexusDBと呼ばれる組み込みデータベースから情報を取得しようとしています。
代替案1:
NexusDBのWebサイトで、ODBCドライバーがあることを読んだので、unixODBCで使用する可能性があります。次に、ここで説明するように、JDBC-ODBCブリッジを実行する必要があります。
代替案2:
NexusDBデータベースを別のデータベースに移行するためのある種のアプリケーションを入手してください。知りたいのですが。
誰かがこれをしたことがあるかどうか知りたいのですが、最善の解決策は何ですか?
読んでくれてありがとう。
delphi - Firebird または NexusDB
Delphi データベース関連の質問が多数あることは承知していますが、これら 2 つのデータベースのみを検討しています。約 100.000 レコードを照会する必要があります。
あなたの経験から、どちらが速いですか:
- 埋め込まれたまま
- C/Sとして
ありがとう。
import - .DB7データファイルを開くにはどうすればよいですか?
お客様のソフトウェアからのDB7拡張子のファイルがたくさんあります。それらのそれぞれは、データベーステーブルに関連しています。私が欲しいのは、CSVなどのより実用的な形式でデータをエクスポートすることです。
ファイルのヘッダーを読んで、NexusDBに宛てたものがありますが、これらのファイルを開くことができません。それについて何か提案はありますか?
delphi - DBLookupComboBoxとコンテンツの更新
私はDelphi7を使用しており、データベースにNexusDBを使用しています。
テーブルの内容を一覧表示するDBLookupComboBoxがあるメインフォームがあります。
フォームにあるボタンを押してリストに新しいアイテムを追加し(2番目のダイアログボックスが開きます)、メインフォームに戻ったら、新しく追加したアイテムをすぐに表示します
私はそれを機能させることができないようです。
ListSourceオブジェクトの下のDataSetを更新してみました。
誰かアイデアはありますか?
ありがとう、デビッド
delphi - TDataSourceTDBMemoが挿入モードまたは参照モードではありません
値を選択している1つのテーブルの値を一覧表示するDBLookupComboBoxがあります。
値が選択されたら、別のテーブルに挿入/更新するために入力/編集できる必要がある2つのDBMemoボックスが必要です。
しかし、彼らは私が彼らに入ることを許可していません。状態がdsInactiveだからだと思います。
どうすればよいですか?
ありがとう!
sql - TQueryの結果のメタデータを取得する
このアプリケーションでは、ユーザーはSQLコードを入力して、NexusDBデータベースからデータを取得できます。実際にクエリを実行せずに、そのようなクエリの結果のメタデータを決定したいと思います。メタデータを使用して、フィールドの数と結果の各フィールドのデータ型を決定します。
[追加]この機能は、ユーザー定義の変換プロセスの一部として使用します。実際の変換は後でバッチのようなプロセスで行われますが、事前にメタデータが必要なので、ユーザーは変換で追加のフィールド特性やプラグインの適用、親子関係の作成などの変更を指定できます。[/ addition ]
これまでは、基本的WHERE FALSE
にSQLクエリに追加するか、既存のすべてのWHERE
ステートメントを。に置き換えることでこれを実行していましたWHERE FALSE AND
。ただし、もちろん、SQL全体を解析して、コメント、ネストされたSELECTS、JOIN、およびその他の句を考慮に入れて、調整する正しいwhere句の正確な場所を決定する必要があります。このようにかなり複雑になります:-(
また、これのもう1つの欠点は、結果セットが空になることを事前に知っていても、ほとんどの場合、クエリの実行に長い時間がかかる可能性があることです。
これを達成する別の方法があるかどうか疑問に思いました。
つまり、TQueryオブジェクトには独自のパーサーが必要であり、SQLステートメントをさまざまな句に分割します。実行の直前にwhere句を変更できれば、自分で解析を行う必要はありません。しかし、TQueryオブジェクトの内部に飛び込むのは少し心配です。ただ、私たちが望むようにそれを使用する方法がないことを知るためです。
誰かがこれについて何かアドバイスがありますか?
delphi - Nexus データベース テーブルの高速読み取り
テーブルの内容全体をできるだけ早くメモリに読み込みたい。私は Nexus データベースを使用していますが、Delphi のすべてのデータベース タイプに適用できるテクニックがいくつかあるかもしれません。
私が見ているテーブルには、20 列の 60,000 レコードがあります。したがって、巨大なデータセットではありません。
私のプロファイリングから、これまでに次のことがわかりました。
TnxTable を使用してテーブルに直接アクセスすることは、SQL クエリと 'SELECT * FROM TableName' を使用することよりも速くも遅くもありません。
実際にデータを読み取ったりコピーしたりせずに、行をループするという単純な操作に、ほとんどの時間がかかります。
私が得ているパフォーマンスは
- すべてのレコードをループすると 3.5 秒かかります
- すべてのレコードをループし、値を読み取って保存すると、3.7 秒かかります (つまり、わずか 0.2 秒長くなります)。
私のコードのサンプル
これには、60,000 行のテーブルで 3.5 秒かかります。
このパフォーマンスは合理的に聞こえますか? データをより速く読み取ることができる他のアプローチはありますか?
現在、同じコンピューター上のサーバーからデータを読み取っていますが、最終的には LAN 上の別のサーバーから読み取っている可能性があります。
delphi - TQuery 結果セットでレコードを見つける最速の方法
Tquery SQL ステートメントの結果セットでレコードを検索するための最良の (読み取り: 最速の) 方法は何だろうと思っています。
今まで私は TQuery.Locate を使用していました。私が正しければ、結果セットの検索に使用できる唯一のステートメントです。では、これを最適化するにはどうすればよいでしょうか。
いくつかのアイデアがありますが、大規模なデータセットでそれらすべてを比較する時間はまだありません。
次のフィールドを持つテーブルがあるとします。
そして、次のクエリ:
結果セット内の ID でレコードを検索したい
- aTable に ID のインデックスがある場合、検索は高速になりますか?
- SQL ステートメントに「Order By ID」を追加すると、検索が速くなりますか?
これに関するアイデアはありますか?
[編集] これの使用を明確にするために: クエリは Reportbuilder Dataview によって実行され、データパイプライン (TQuery.Dataset) を通じて利用可能になります。カスタム レポートでは、より高いレベルの ID に基づいてパイプラインを移動する必要があります。したがって、クエリを使用しないことはここでは適用されません。上記の私の提案のいずれかが物事をスピードアップするかどうか疑問に思っています。
string - Delphi / Queryコンポーネント-sql.textプロパティに長い文字列(800文字)を割り当て、SQLを326文字のみにトリミングします
Delphi / NexusDBを使用し、実行時にSQL(約800文字の長さ)をビルドしてから、それをnexusdb query.sql.textプロパティに渡して実行しましたが、実行時に無効なトークンのエラーが見つかりました。
私はこのようにSQLを渡します
トレースしたところ、Query.SQL.TextでSQL文字列が326文字にトリミングされていることがわかりました。SQLを保持する文字列変数は完全で問題ありませんが、その変数をquery.sql.textに割り当てると、326文字しか渡されません。もちろん、これにより、無効なSQL構文でエラーが発生します。
SQL文字列がそのようにトリミングされた理由を教えてください。
更新: * memo1.lines.text:= VarStrSQLを試しましたが、メモコンポーネントにもトリミングされた文字列が表示されます!! 私の文字列の文字がそれを引き起こす可能性はありますか?TStringsが私の文字列をトリミングする原因となるDelphi2010のバグ?*
ありがとう