SQLデータベースへの書き込み<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />JMP の SQL 接続はデータの読み取りに最適です。データの書き込みに使用している人はいますか?
データを収集して新しいテーブルに書き込むストアド プロシージャがあります。 2 番目のテーブルを使用してパラメーターのリストを読み取り、収集するデータを認識します。 このテーブルを JMP で読み取ることはできますが、書き込むのは決して簡単ではありません。
- テキスト列は、末尾に空白を付けた JMP nvarchar として保存されます。これには、アップロードされたテキスト列を使用するための空白トリム関数が必要です。
- 日付は正しくダウンロードされますが、日付として書き込もうとすると OBDC ドライバーによってエラーがスローされます。 最初に列をテキスト形式に変換し、使用時に元に戻すことでこの問題を回避できますが、かなり面倒です。
現在、ストアド プロシージャを使用して、JMP で作成されたテーブルからマスター テーブルに正しいデータをコピーし、間接的に制限を克服しています。
私の質問は、JSL/SQLを一緒に使用してテーブルを読み取り、新しい行を追加し、変更/修正をサーバーに書き戻すより良い方法はありますか?
Re: SQL データベースへの書き込みありがとう@vince_faller
私はこれを使用しており、ループで実行することでスケールアップすることもできました。何らかの理由で、一度に約 35,000 行の制限があったので、一度に 25,000 行を読み取り、データベースに入力する for ループを作成しました。
Re: SQL データベースへの書き込みこんにちは、
共有していただきありがとうございます。
以下は私の場合です。助けていただきありがとうございます。
1. サーバーの SQL データベース名: SQL_machine_yield_db
データベース接続から更新を取得するときに SQL_machine_yield_db.jmp を添付します。
2. データベースには 8 つの列があります
3. テーブル「new_and_update_yield.jmp」のデータ
質問: jsl/sql を使用してサーバー内の new_and_yield.jmp を SQL_machine_yield_db に更新するにはどうすればよいですか?
よろしくお願いします
Re: SQL データベースへの書き込みテーブル全体を取り込むだけではなく、WHERE ステートメントを使用してデータテーブルが何であるかをクエリしていると思いますか?
たまたまテーブル全体を引っ張っていた場合、
dt << データベースの保存(データベース、
"dbo.fake"、
交換する
);
うまくいくでしょう。 それ以外の場合は、これを行わないでください。テーブル内の JMP クエリにない情報はすべて削除されるためです。 これは JMP 12+ にあると思いますか?
そうでない場合は、ID があるかどうかで分割できます。ID がある場合は更新を実行し、ID がない場合は挿入を実行します。ただし、ID 列をロックして非表示にするのが最善でしょう。ここではただ吐き出しているだけですが、うまくいくはずだと思います。
Re: SQL データベースへの書き込みJMP テーブルに編集が加えられたときにデータベースを「自動更新」したいのだと思います (「更新」ボタンなどはありません)。 「Subscribe()」を使用してこれを行うことができる場合があります。 例については、「ヘルプ > スクリプト インデックス」を参照してください。
Re: SQL データベースへの書き込みその例をありがとう。 生の SQL を書いてそれを実行 (INSERT、UPDATE、REPLACE など) したり、ストアド プロシージャを実行してパラメータを渡したりできることはわかっていました。 私は、ユーザーが JMP で既存のデータベーステーブルを開くことができる SQL/JSL の例を探していました。 エンド ユーザーにとって、これはリモート コンピュータに保存された単なる JMP テーブルのように見えます。 違いは、JMP テーブルに加えた変更を元のデータベースにアップロードできることです。
これで、テーブルに新しい行が追加されたかどうかを確認する JSL コードを記述し、INSERT INTO を使用してそれらの行をデータベースに書き込む方法がわかりました (データ型の不一致を制御できる場合)。 既存の行の編集を追跡する方法はありますか?
Re: SQL データベースへの書き込みこれは私にとってはうまくいきました。おそらくあなたの質問を誤解しています。
dbc =データベース接続の作成( "DRIVER=SQL SERVER;SERVER=fake_database;Database=Test_DB" );
SQLreturn = SQLの実行(dbc、
"INSERT INTO [Test_DB].[dbo].[fake]
価値観
('テストSQL挿入'
,1
,1
,「JMP」
,14.14
,14.14
,1
,「JMP」
,「JMP」
,「JMP」
,14
,14
)」
);
データベース接続を閉じる(dbc);

日付の問題は、JMP が実際に日付を秒として保存しているためだと思います。JMP で日付に対して MDYHMS() を実行するか、SQL で date add(JMPdate, s, '1-1-1970') を実行することができます。
他に何か情報はありますか?データを取得して JMP テーブルに行を追加してから SQL テーブルを更新することはできますが、コンテキストがなければ、データの取得をスキップして SQL に直接挿入することになります (または、SQL に追加を実行させ、JMP を完全に省略します)。
Re: SQL データベースへの書き込み申し訳ありませんが、私はこのテーマに関しては全くの初心者ですので、お力になれません。しかし、データベースへの書き込みに関してどなたかご意見がございましたら、よろしくお願いいたします。