- Goal
FTPで送られてくるXMLファイルを自動的にSQLServerのテーブルにロードする。
SQLServer上にテーブル名Logxmlを作成し、受信したXMLを1カラムにINSERTする。LogxmlテーブルのSQLは以下の通り。この後、必要に応じてXML形式のカラムからトリガーやTSQLなどで各要素・カラムの切り出しをする。This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersCREATE TABLE [dbo].[Logxml]( [ID] [int] IDENTITY(1,1) NOT NULL, [logxml] [xml] NULL, [filename] [varchar](500) NULL, [creation_date] [datetime] NULL, CONSTRAINT [PK_Logxml] PRIMARY KEY CLUSTERED ( [ID] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] GO
- How
PowerShellで実施。
ターゲットのフォルダから対象のファイル名を取得して、Bulkインサートを行う。
スクリプトは常駐させておいて、60秒間隔で起動。
(本当はWMIでやりたいので、後日トライ予定)This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode characters#一定時間間隔で起動 while(1){ #終了時は、[Ctrl + C] を押す Write-Host "End to [Ctrl + C]" #Connect to the SQL database $SQLserver = "0.0.0.0" -- SQL server name $Icatalog = "TEST" -- Database name $UID = "UID" $PASSWORD = "PASSWORD" $conn = New-Object System.Data.SqlClient.SqlConnection $conn.ConnectionString = "Server = $SQLserver; Database = $Icatalog; User ID = $UID; Password= $PASSWORD;" $Conn.Open() $Command = New-Object System.Data.SQLClient.SQLCommand $Command.Connection = $Conn #FTPで受信するフォルダPathの設定 $filepath = "C:\inetpub\ftproot\test" #フォルダ内の全てのXMLファイルをリスト化 $filelist = Get-ChildItem -name $filepath\*.xml #リストの上から順番にLoad foreach ($filename in $filelist){ $fileinput = Get-Content $filepath\$filename echo "Loading $filename" $output | foreach { $Command.CommandText = "INSERT INTO dbo.Logxml(logxml,filename,creation_date) SELECT CONVERT(XML, BulkColumn) AS BulkColumn,'$filename',getdate() FROM OPENROWSET(BULK '$filepath\$filename', SINGLE_BLOB) AS X" $Command.ExecuteNonQuery() | out-null } #アーカイブフォルダーへファイルの移動 Move-Item $filepath\$filename $filepath\archive } $Conn.Close() #60秒待機 Start-Sleep -Seconds 60 }
Oracle Application Express Notes | Apps development Notes | Google Cloud Platform | Python | apps test | Cool Beans | English | Books
2017/01/31
FTPで送られてくるXMLファイルをSQLServerに自動的にロードする
ラベル:
PowerShell,
Shell Script,
SQL server,
仕事
2017/01/30
特定の文字の間の文字を切り出す - SQL
- Goal
文字列から特定の文字の間の文字を抜き出す
(例) 1234567890123 Hello 0980 982134 1adfllkjasf から1つ目の空白と 2つ目の空白の間の文字列を抜き出す。
結果として、Helloだけを抜き出す。 - Source
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersINPUT 1st_BLANK 2nd_BLANK START_POSITION LENGTH GOAL 1234567890123 Hello 0980 982134 1adfllkjasf 14 20 15 5 Hello 1234567890123456 World!! 0980 982134 1adfllkjasf 17 25 18 7 World!! This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersSELECT INPUT --CHARINDEX(検索文字列,検索対象文字列,<OPTION>開始位置) , CHARINDEX(' ',INPUT) AS '1st_BLANK' --1st blank position , CHARINDEX(' ',INPUT,CHARINDEX(' ',INPUT)+1) AS '2nd_BLANK' --2nd blank position , CHARINDEX(' ',INPUT)+1 AS START_POSITION , CHARINDEX(' ',INPUT,CHARINDEX(' ',INPUT)+1) - (CHARINDEX(' ',INPUT)+1) as LENGTH -- 2nd blank - start position --SUBSTRING(文字列,開始位置,長さ) , SUBSTRING(INPUT,CHARINDEX(' ',INPUT)+1,CHARINDEX(' ',INPUT,CHARINDEX(' ',INPUT)+1) - (CHARINDEX(' ',INPUT)+1)) as GOAL FROM (VALUES('1234567890123 Hello 0980 982134 1adfllkjasf') ,('1234567890123456 World!! 0980 982134 1adfllkjasf')) as T(INPUT)
2017/01/28
BOM構成表情報を取得するAPI
- Goal
BOMPEXPL.EXPLODER_USEREXITを呼び出して、BOM_EXPLOSION_TEMPテーブルに出力させる。APEXのアプリから、EBSのBOM構成表を呼び出したりできる。
INTENDED BILLの画面と同じ情報を引っ張ってこれる。
- SourceサンプルThis file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode characters
DECLARE l_err_msg VARCHAR2(4000); l_error_code VARCHAR2(4000); l_grp_id NUMBER; l_session_id NUMBER; l_count NUMBER; l_item_id NUMBER; -- BEGIN SELECT USERENV ( 'sessionid') INTO l_session_id FROM DUAL; dbms_output.put_line ('l_session_id is - '||l_session_id ); bompexpl.exploder_userexit ( verify_flag => 0, org_id => XXX, -- Organization_ID order_by => 1, grp_id => 999999, -- 999999をセットして動かしている session_id => '', -- blank でも動く levels_to_explode => 10, bom_or_eng => 1, --1=BOM 2=ENG impl_flag => 1, --1=Implemented Only 2=Implemented and Unimplemented plan_factor_flag => 2, --1=yes 2=No explode_option => 2, --1=ALL 2=Current 3=Current and Future module => 1, --1=Costing 2=BOM 3=Order Entry 4=ATP 5=WSM cst_type_id => 1, std_comp_flag => 2, expl_qty => 5, item_id => l_item_id, alt_desg =>'', comp_code => '', rev_date => TO_CHAR ( SYSDATE, 'YYYY/MM/DD HH24:MI:SS'), err_msg => l_err_msg , error_code => l_error_code); dbms_output.put_line ('l_err_msg is '||l_err_msg ); dbms_output.put_line ('l_error_code is '||l_error_code ); EXCEPTION WHEN OTHERS THEN RAISE_APPLICATION_ERROR(-20001, SQLERRM); -- commit; END; /
2017/01/27
オラクル スケジューラー テンプレ
- Goal
DBMS_SCHEDULERパッケージを使って、PL/SQLブロックや、プロシージャのスケジュールを作る。Oracle Schedulerを使う。
- Sourceサンプル
Sample1 - PLSQLブロックを5時57分から23時57分まで、毎時間流すSample2 - プロシージャを2時間おきに流すThis file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode characters---- Sample1 BEGIN DBMS_SCHEDULER.CREATE_JOB ( job_name => '"XXX"."YYYYYYY"', -- JOB の名前 job_type => 'PLSQL_BLOCK', job_action => 'BEGIN --dbms_mview.refresh(''------'',''c'', NULL, TRUE, FALSE, 1, 0, 0, FALSE, FALSE); END;', number_of_arguments => 0, start_date => TO_TIMESTAMP_TZ('2017-01-25 00:00:00.000000000 AMERICA/CHICAGO','YYYY-MM-DD HH24:MI:SS.FF TZR'), -- 5時57分から23時57分まで、毎時間流す repeat_interval => 'FREQ=DAILY;BYDAY=MON,TUE,WED,THU,FRI,SAT;BYHOUR=5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23;BYMINUTE=;BYSECOND=0', end_date => NULL, enabled => FALSE, auto_drop => FALSE, comments => 'Refresh ----- every 1 hour'); DBMS_SCHEDULER.SET_ATTRIBUTE( name => '"XXX"."YYYYYYY"', -- JOB の名前 attribute => 'logging_level', value => DBMS_SCHEDULER.LOGGING_OFF); DBMS_SCHEDULER.enable( name => '"XXX"."YYYYYYY"'); -- JOB の名前 END; ---- Sample2 BEGIN DBMS_SCHEDULER.CREATE_JOB ( job_name => '"XXX"."YYYYYYY"', -- JOB の名前 job_type => 'STORED_PROCEDURE', job_action => 'XXXX.ZZZ_MAIN_PKG.XXX',--- Procudere名 number_of_arguments => 0, start_date => NULL, -- 6時から20時まで2時間おきに流す repeat_interval => 'FREQ=DAILY;BYDAY=MON,TUE,WED,THU,FRI,SAT;BYHOUR=6,8,10,12,14,16,18,20;', end_date => NULL, enabled => FALSE, auto_drop => FALSE, comments => 'test'); DBMS_SCHEDULER.SET_ATTRIBUTE( name => '"XXX"."YYYYYYY"', -- JOB の名前 attribute => 'logging_level', value => DBMS_SCHEDULER.LOGGING_OFF); DBMS_SCHEDULER.enable( name => '"XXX"."YYYYYYY"'); END; - 参考 Thanks!!
Oracle Scheduler マニュアル
2017/01/17
日付から年と週番号を求める - ISO方式 / VB6の場合
- Goal
日付からISO8601方式での年+週番号(YY-WWのフォーマット)で出力する。
ISO8601では、月曜日が週の始まりで、最初の木曜日を含む週が、その年の第1週として計算する。
- Sourceサンプル
手順: 1. ターゲットの日付を含む週の月曜日を求めて、年を算出する
2. ISO方式を考慮した週番号を算出する。
想定結果(YY-WW): 2017/01/01(SUN) = 16-52
2018/01/01(MON) = 18-01
2019/01/01(TUE) = 19-01
2020/01/01(WED) = 20-01
2021/01/01(FRI) = 20-53
2022/01/01(SAT) = 21-52
2023/01/01(SUN) = 22-52This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersPrivate Sub Command1_Click() Dim A As String Dim TEST_D As Date TEST_D = #1/1/2018# A = Format(TEST_D - (Weekday(TEST_D, vbMonday) - 1), "yy") & "-" & Format((DatePart("ww", TEST_D, vbMonday, vbFirstFourDays)), "00") Print A End Sub
- 参考 Thanks!!
DatePart function - Microsoft Developer Network
年月日から週番号 : 計算結果の確認用
2017/01/15
Monopoly DEAL モノポリー DEAL ー カードゲーム
最近、よくやるやつ。モノポリーほど時間がかからなくて、お金のやり取りとかがめんどくさくないカードゲーム版のモノポリー。全くルールは違っていて、交渉も必要ない。
ギリギリまで大逆転も可能で結構よくできていると思う。Deal Breaker とJust say no が、大富豪のジョーカーとスペード3返しみたいな感じで使えるのが私は好き。(よくわからん説明。。。。)
子供10才は可能。6才はまだ無理。我が家では、モノポリーよりは険悪にならずにプレイできる。
モノポリー ディール - Monopoly Deal

ギリギリまで大逆転も可能で結構よくできていると思う。Deal Breaker とJust say no が、大富豪のジョーカーとスペード3返しみたいな感じで使えるのが私は好き。(よくわからん説明。。。。)
子供10才は可能。6才はまだ無理。我が家では、モノポリーよりは険悪にならずにプレイできる。
モノポリー ディール - Monopoly Deal
2017/01/12
.bash コマンドインデックス
.bash のコマンド集
1. which bash - bash の種類を確認
#/bin/bash
#この結果をスクリプトの一行目に表示す
#!/bin/bash
2. cd - フォルダの変更
3. ls - フォルダの中身を表示
4. rm - ファイル、フォルダの削除
5. cp - ファイルのコピー
2. cd - フォルダの変更
3. ls - フォルダの中身を表示
4. rm - ファイル、フォルダの削除
5. cp - ファイルのコピー
6. mv - ファイルの移動
7. mkdir - ディレクトリを作成
8. pwd - 現在のフォルダパスを表示
9. chmod - ファイル・ディレクトリのアクセス権限変更
10. tee - 標準出力+ファイル出力の同時出力
11. awk - 文字列コントロール/編集
12. xargs - 標準入力から生成したコマンドラインを実行する
9. chmod - ファイル・ディレクトリのアクセス権限変更
10. tee - 標準出力+ファイル出力の同時出力
11. awk - 文字列コントロール/編集
12. xargs - 標準入力から生成したコマンドラインを実行する
タスクマネージャをリモートデスクトップ上で起動
- Issue
リモートデスクトップ接続中Ctrl+Alt+Deleteでタスクマネージャを起動できない。
(知らずにしょーもない時間を潰す…)
リモートデスクトップ接続中Ctrl+Alt+Deleteでタスクマネージャを起動できない。
- 対策
1. Ctrl+Shift+Esc
1. Ctrl+Shift+Esc
2. Run taskmgr
Windows key + R -> taskmgr
3. タクスバー上で右クリックする
- Thanks!
How-to Geek - Six ways to open the windows task manager
Windows key + R -> taskmgr
3. タクスバー上で右クリックする
- Thanks!
How-to Geek - Six ways to open the windows task manager
2017/01/05
SQL server ログファイルが大きくなる
- Issue
SQL Serverのログファイルが大きくなる。特に、洗い替えの処理等を頻繁に行うような場合。
SQL Serverのログファイルが大きくなる。特に、洗い替えの処理等を頻繁に行うような場合。
- 原因と対策
Recovery modelの設定が原因。 Fullになっている。
それをSimpleに変更する。
(注)洗い替え処理なので、ロールバックが重要ではないので。。。
それをSimpleに変更する。
(注)洗い替え処理なので、ロールバックが重要ではないので。。。
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
--参考 | |
--https://technet.microsoft.com/en-us/library/ms189493(v=sql.105).aspx | |
-- | |
USE <database-name>; | |
GO | |
-- DBの設定を、SIMPLEモードにする | |
ALTER DATABASE <database-name> SET RECOVERY SIMPLE; | |
GO | |
-- Shrink the truncated log file to 1 MB. | |
DBCC SHRINKFILE (<log-file-name>, 1); | |
GO | |
-- 設定をもどす。洗い替えならSIMPLEのままでよい | |
ALTER DATABASE <database-name> SET RECOVERY FULL; | |
GO |
登録:
投稿 (Atom)