2020年04月14日

SQL Server テーブル出力バッチ

SQL Serverで、テーブルをCSVで出力するバッチです。
指定テーブルの全レコードを対象とする場合は bcp %DBNAME%%TABLE% out ... とする。
rem SQL Server テーブル出力バッチ

rem 初期値セット
set DBNAME=[WORKDB].[dbo].
set TABLE=MyTable
set SQL="SELECT * FROM %DBNAME%%TABLE% WHERE MyColumn IS NOT NULL"
set OUTPUTDIR=C:\WORK\
set OUTPUTFILE=OUTPUT_%TABLE%.csv
set OUTPUTPATH=%OUTPUTDIR%%OUTPUTFILE%
set TERMINATOR=,
set SERVERNAME="myserver"
set LOGINID="loginid"
set PASSWORD="123456789"

rem csvファイル出力実行
bcp %SQL% queryout %OUTPUTPATH% -c -t %TERMINATOR% -S %SERVERNAME% -U %LOGINID% -P %PASSWORD%

pause
テキストファイルをもとにテーブルを一括でCSVへ出力する場合は、以下のようにします。
rem SQL Server 一括テーブル出力バッチ

rem 初期値セット
set DBNAME=[WORKDB].[dbo].
set OUTPUTDIR=C:\WORK\
set TERMINATOR=,
set SERVERNAME="myserver"
set LOGINID="loginid"
set PASSWORD="123456789"

rem csvファイル出力実行(テーブル一覧を書いたTableList.txtを用意しておく)
for /f %%i in (TableList.txt) do (
if %%i==dummystring (
rem 無視文字列
) else (
bcp "SELECT * FROM %DBNAME%%%i WHERE MyColumn IS NOT NULl" queryout %OUTPUTDIR%OUTPUT_%%i.csv -c -t %TERMINATOR% -S %SERVERNAME% -U %LOGINID% -P %PASSWORD%
)
pause
)

pause

posted by Hiro at 19:14| Comment(0) | プログラム

JavaScript オブジェクトの継承について

// プロトタイプオブジェクトの定義方法/オブジェクトの継承について
'use strict';

var Person = function(name, birthday, address){
this.name = name;
this.birthday = birthday;
this.address = address;
}

// オブジェクトリテラルでプロトタイプオブジェクトを定義する。
Person.prototype = {
getName : function(){
return `名前は${this.name}です。`;
},
getAddress : function(){
return `居住地は${this.address}です。`;
}
}

// 静的プロパティ
Person.Company = 'ABC Corp.';
// 静的メソッド
Person.Greeting = function(){
return 'こんにちは!';
}

// インスタンス生成
var p1 = new Person('太郎','2005/08/20','東京都');
var p2 = new Person('花子','2008/10/05','大阪府');

console.log(p1.getName());
console.log(p2.getAddress());

// p2インスタンスのみメソッド追加
p2.getBirthday = function(){
return `誕生日は${this.birthday}です。`;
}

// console.log(p1.getBirthday()); // エラー
console.log(p2.getBirthday());

// プロトタイプチェーンによるオブジェクトの継承
var BaseballPlayer = function(name, birthday, address, team, career){
Person.call(this, name, birthday, address); // this(BaseballPlayerのインスタンス)を使ってPersonコンストラクタを呼び出す
this.team = team;
this.career = career;
}

BaseballPlayer.prototype = new Person(); // Personのインスタンスをセットする
BaseballPlayer.prototype.getTeam = function(){
return `チーム名は${this.team}です。`;
};

var bp1 = new BaseballPlayer('鈴木三郎','1980/01/30','兵庫県','ナンチャラズ',5);
console.log(bp1.getAddress()); // Personのメソッド
console.log(bp1.getTeam()); // BaseballPlayerのメソッド

// ダミーのオブジェクト
var Dummy = function(){};

// prototypeを上書き
BaseballPlayer.prototype = new Dummy();
console.log(bp1.getTeam()); // インスタンスには影響なし(インスタンス生成時のプロトタイプチェーンを保持する)。
タグ:JavaScript
posted by Hiro at 00:04| Comment(0) | プログラム

2020年04月11日

JavaScript オブジェクトのマージ、分割代入

オブジェクトのマージ
// オブジェクトのマージ
var obj1 = {name:'太郎君', age: 20};
var obj2 = {age: 35, hobby: '野球'};

// Object.assignでマージ。一つ目の引数のオブジェクトに統合する。
Object.assign(obj1, obj2);

console.log(obj1); // Object {name: "太郎君", age: 35, hobby: "野球"}
分割代入
// 分割代入(ES2015)

// 配列
let data = [10,20,30,40,50];
let [d1, d2, ...other] = data;
console.log(d1);
console.log(d2);
console.log(other);

// オブジェクト
let parson = {name:"太郎", age:10, hobby:{h1:'釣り', h2:'サッカー'}};
let {name = '名無し', birthplace = '不明', age : nennrei, hobby: {h1 : hobby_h1}} = parson;
console.log(name);
console.log(birthplace);
console.log(nennrei);
console.log(hobby_h1);
タグ:JavaScript
posted by Hiro at 23:02| Comment(0) | プログラム