スクリプトを使用してJMP dataTableからテーブル内のSQL Serverデータベースにデータを挿入(追加/書き込み)する方法こんにちは、
さまざまな数式/形式を使用してデータ準備/データ クリーニングをスクリプト化し、出力データを JMP テーブルから SQL サーバーに挿入(書き込み)する準備ができました。 SQLに接続しましたが、ターゲットテーブルのSQLサーバーデータベースにデータを挿入(追加)できません。 SQL ステートメントを追加してこの状況を克服できるように支援してくれる人はいますか。 これは、作成する準備ができている (JMP テーブル = "アップロード") 終了スクリプトです。
Data Table( "ServerData" ) << Join(
With( Data Table( "DataProcessed" ) ),
Merge Same Name Columns,
Copy second table formula( 0 ),
Suppress main table formula evaluation( 0 ),
By Matching Columns( :Individual_Claim_Number_ID_Full = :Individual_Claim_Number_ID_Full ),
Drop multiples( 0, 0 ),
Name( "Include non-matches" )(0, 1),
Preserve main table order( 1 ),
Output Table( "Upload" )
);
dbc = Create Database Connection(
"Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=MAWA_REP;Data Source=USFLI-WAS101"
);
sqlreturn = Execute SQL(
dbc,
"INSERT Upload INTO [dbo].ALL_CUSTOMERS"
);
Close Database Connection( dbc );
データアクセスRe: スクリプトを使用して JMP dataTable からテーブル内の SQL Server データベースにデータを挿入 (追加/書き込み) する方法show() または write() コマンドを使用して、SQL ステートメントをログ ウィンドウに表示します。それをコピーして SQL Server フロントエンド (SQL Management Studio など) に貼り付けます。これにより、より適切なエラー メッセージが表示されるはずです。ブランクが問題を引き起こしているのではないかと思います。SQL サーバーでこれを「手動」で行う方法を見つければ、JSL から機能させることができるようになります。SQL Server を持っていないので、それ以上のトラブルシューティングはできません。
Re: スクリプトを使用して JMP dataTable からテーブル内の SQL Server データベースにデータを挿入 (追加/書き込み) する方法こんにちは、pmrozさん。
色々と疲れましたが、エラーメッセージは出ませんでした。 しかし、データはSQLテーブルに挿入されません。
別のテーブルにも同じスクリプトを使用しましたが、正常に機能します。 行のデータはデータベーステーブルに正しく追加されました。 しかし、このテーブルには 2 つの列 (フィールド) しかありません。 それは正しく機能するかもしれません。
しかし、「ALL_CUSTOMER」への挿入に疲れたとき、スクリプトはスムーズに実行されますが、データベースに追加されていないデータが挿入されました。 リアルタイムでは値に多くの空白がありますが、挿入が機能していないことが原因でしょうか? ここでは、完全なスクリプト、SQL 列のプロパティ、および SQL テーブルにアップロードする準備ができているデータ (JMP ファイル) を参照用に添付します。
間違いがあれば日付も確認していただけますか。
スクリプトの 90% を完了しましたが、プロジェクトを 100% 完了させるための SQL へのデータのアップロードに苦労しました。
親切にご協力いただきありがとうございます。
Re: スクリプトを使用して JMP dataTable からテーブル内の SQL Server データベースにデータを挿入 (追加/書き込み) する方法このようなものはあなたが望むことを行います。日付を処理していません。追加のロジックが必要になります。SQL サーバーが挿入の日付をどのように処理するかがわかりません。
dt = data table ("Upload");
col_list = dt << get column names(string);
col_names = concat items(col_list, ", ");
insert_prefix = evalinsert(
"INSERT INTO [dbo].[ALL_CUSTOMERS] (^col_names^) VALUES ");
dbc = create database connection("Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=MAWA_REP;Data Source=USFLI-WAS101");
for (i = 1, i <= nrows(dt), i++,
for (k = 1, k <= ncols(dt), k++,
one_col = col_list[k];
one_value = column(dt, one_col)[i];
// Surround strings with single quotes
if (type(one_value) == "String",
one_value = "'" || one_value || "'";
,
// Convert numeric to string, handle missing values (.)
one_value = char(one_value);
if (one_value == ".", one_value = "NULL");
);
if (k == 1,
sql_string = one_value;
,
sql_string = sql_string || ", " || one_value;
);
);
insert_sql = insert_prefix || "(" || sql_string || ")";
show(insert_sql);
// Do the insert. Execute SQL does an implicit commit
execute sql(dbc, insert_sql);
);
close database connection(dbc);
Re: スクリプトを使用して JMP dataTable からテーブル内の SQL Server データベースにデータを挿入 (追加/書き込み) する方法ありがとう..
SQL を実行する例を示していただけますか。あなたの手順に従って、あなたの手順に従ってスクリプトを作成できるようにします。
Re: スクリプトを使用して JMP dataTable からテーブル内の SQL Server データベースにデータを挿入 (追加/書き込み) する方法SAVE DATABASE でテーブルが上書きされると思います。データを追加する場合は、複数の挿入用の SQL 文字列を作成し、EXECUTE SQL で SQL を実行できます。
Re: スクリプトを使用して JMP dataTable からテーブル内の SQL Server データベースにデータを挿入 (追加/書き込み) する方法申し訳ありませんが、最初の質問ではすぐに追加できる完全なスクリプトとデータ テーブルを追加していませんでした。
ここでは、SQL サーバーに追加するためのスクリプトとデータ テーブルを添付しました。
データ テーブルには 224 列があり、同じフィールド名の SQL テーブルに基づいて正しい順序になっています。 行数は毎回変わりますので、upload.jmpテーブルの行を元にステートメントでSQLにデータを追加します。
//データ テーブルを「アップロード」して SQL Server に追加する準備ができました
dt << Save DataBase("Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=MAWA_REP;Data Source=USFLI-WAS101", "dbo.ALL_CUSTOMERS");
INSERT INTO [dbo].[ALL_CUSTOMERS],
(列1、列2)
価値観
(col1_value1、col2_value1)、
(col1_value2、col2_value2)、
Re: スクリプトを使用して JMP dataTable からテーブル内の SQL Server データベースにデータを挿入 (追加/書き込み) する方法SQL はアップロードが何なのかを知りません。
できるかもしれません
dt = Data Table( "ServerData" ) << Join(
With( Data Table( "DataProcessed" ) ),
Merge Same Name Columns,
Copy second table formula( 0 ),
Suppress main table formula evaluation( 0 ),
By Matching Columns( :Individual_Claim_Number_ID_Full = :Individual_Claim_Number_ID_Full ),
Drop multiples( 0, 0 ),
Name( "Include non-matches" )(0, 1),
Preserve main table order( 1 ),
Output Table( "Upload" )
);
dt << Save DataBase("Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=MAWA_REP;Data Source=USFLI-WAS101", "dbo.all_customers");
しかし、それは実際にSQLテーブルを上書きすることになると確信しています。
SQLを動的に書くこともできます。テーブルを通じてすべての値を SQL 文字列に入力し、実行できるようにするためだけです。
INSERT INTO [dbo].[ALL_CUSTOMERS]
(col1, col2)
VALUES
(col1_value1, col2_value1),
(col1_value2, col2_value2),