SQLServerかなりの初心者のものです。
SQLServer2000を使用しています。DTSパッケージを使用して、SQL上の既存のデータをAccessへコピーしたいと思います。
今まで、ウィザードを使用して丸ごとテーブルをコピーしたことはありますが、データを変換(加工?)してコピーしたことはありません。
たとえば、半角カナで表記されたものを、全角カナに変換しAccessのテーブルへ移動させることなどは可能でしょうか?
できれば元テーブルは既存のソフトのデータベース内にありますので、半角のままにしておきたいです。
移動先の書式だけを全角にしたいのですが可能でしょうか?
データの変換を行うには、ActiveX Scriptを利用するという段階までは調べました。
もしその場合はどのようなコード記述をすればよろしいでしょうか。大変お手数ですが、VBのコードをどなたか教えていただけないでしょうか。
よろしくお願いします。
No.2ベストアンサー
- 回答日時:
送れてごめんなさい^^;回答したのにそのまま見てませんでした。
私の作ったのはユーザ関数です
バカみたいに長いけど↓こんなんです
/********************************************
関数名:uf_HanToZen
引数 :nvarchar(256)入力文字列
int出力文字数
戻り値:nvarchar(256)出力文字列
説明 :半角文字を全角に変換して出力する。
****************************************
create function uf_HanToZen (@Str as varchar(256), @Len as int = 0)
returns nvarchar(256)
as
begin
declare @Alphanvarchar(256)
declare @Kananvarchar(256)
declare @Dakunvarchar(256)
declare @Kigonvarchar(256)
declare @Ndakunvarchar(256)
declare @DAlphanvarchar(256)
declare @DKananvarchar(256)
declare @DDakunvarchar(256)
declare @DKigonvarchar(256)
declare @DNdakunvarchar(256)
declare @Cntint
declare @Idxint
declare @Chrnvarchar(2)
set @Alpha ='0123456789@ABCDEFGHIJKLMNO'
+'PQRSTUVWXYZabcdefghijklmno'
+'pqrstuvwxyz'
set @Kana = 'ァアィイゥウェエォオカキクケコサシスセソ'
+'タチッツテトナニヌネノハヒフヘホマミムメモ'
+'ャヤュユョヨラリルレロヮワヲン'
set @Daku ='ガギグゲゴザジズゼゾダヂヅデド'
+'バパビピブプベペボポヴ'
set @Kigo =' 、。,.・:;?!゛゜`^~_ー/|''"()[]{'
+'}「」+-=<>\$%#&*@'
set @DAlpha ='0123456789'
+'@ABCDEFGHIJKLMNO'
+'PQRSTUVWXYZ'
+'abcdefghijklmno'
+'pqrstuvwxyz'
set @DKana = 'ァアィイゥウェエォオ'
+'カキクケコサシスセソ'
+'タチッツテトナニヌネノ'
+'ハヒフヘホマミムメモ'
+'ャヤュユョヨラリルレロヮワヲン'
set @DDaku ='ガギグゲゴザジズゼゾダヂヅデド'
+'バパビピブプベペボポヴ'
set @DKigo =' 、。,.・:;?!゛゜`^'
+' ̄_ー/|’”()[]{'
+'}「」+-=<>¥$%#&*@'
set @Ndaku = @Alpha + @Kana + @Kigo
set @DNdaku = @DAlpha + @DKana + @DKigo
if @Len > 0
set @Str = left(@Str, @Len)
--濁音カナの置換
set @Len = len(@Str)
set @Cnt = 1
while @Cnt < @Len
begin
set @Chr = substring(@Str, @Cnt, 2)
set @Idx = charindex(@Chr collate Japanese_Unicode_BIN, @Daku)
if @Idx % 2 = 1
set @Str = replace(@Str collate Japanese_Unicode_BIN, substring(@Daku, @Idx, 2), substring(@DDaku, @Idx / 2 + 1, 1))
set @Cnt = @Cnt + 1
end
--濁音以外の置換
set @Len = len(@Str)
set @Cnt = 1
while @Cnt <= @Len
begin
set @Chr = substring(@Str, @Cnt, 1)
set @Idx = charindex(@Chr collate Japanese_Unicode_BIN, @Ndaku)
if @Idx > 0
set @Str = replace(@Str collate Japanese_Unicode_BIN, substring(@Ndaku, @Idx, 1), substring(@DNdaku, @Idx, 1))
set @Cnt = @Cnt + 1
end
return @Str
end
ご回答ありがとうございます。
このように書くことで可能になるのですね。
参考にさせていただきます。
どうもありがとうございました。
No.1
- 回答日時:
私も同じ経験をしましたw私の場合はActiveXScriptを使用しないでSQLサーバに半角→全角変換関数を作成しました
関数の作成方法は自分で調べてください。
関数の使用法はDTSパッケージをデザインで開いて、SQLサーバ接続とAccess接続をつないでる黒い矢印をダブクリしてデータ変換タスクのプロパティでSQLクエリのチェックボックスを選択するとSQL文を記述できますよね?
そこで抽出する項目に作成した関数を使用して変換しました。
例)関数 uf_HanToZen() を DB1に作成した場合
Select DB1.dbo.uf_HanToZen(vchHankaku) From Table1
この回答への補足
SQLサーバに変換関数を作成というのは、ユーザー定義関数のことでしょうか。
試してみたのですが、よく分かりませんでした。
CREATE FUNCTIONステートメントというものを使用すればよろしいのでしょうか。
関数はStrConvですか?
試したのですが、分かりませんでした。
よろしければ簡単にで結構ですので、教えていただけないでしょうか。
大変申し訳ないです。本当に初めてで分かりません。
ご返答、ありがとうございました。
可能であることが分かっただけでも前進です。
ただし、大変申し訳ないのですが、一日調べても分からない点がありましたので、
どうか再度助言していただけないでしょうか。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
顧客データベースを作る場合、...
-
外部結合で取得した項目にNVL関数
-
select文のwhere句に配列を入れ...
-
SQLServer2005のストアドプロシ...
-
スペースを検索したい
-
DTSパッケージについて
-
差し込み後、元データを変更し...
-
for whichの使い方
-
外部参照してるキーを主キーに...
-
フィルターかけた後、重複を除...
-
エクセルで最後の文字だけ置き...
-
列のヘッダーを含めるのをデフ...
-
SQLで列名を変数にできないでし...
-
EXISTSを使ったDELETE文
-
SELECT 文 GROUP での1件目を...
-
INSERT文でフィールドの1つだ...
-
重複していないレコードの抽出...
-
列番号による項目の取得について
-
カーソル0件の時にエラーを発生...
-
ACCESSユニオンクエリでORDER B...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
スペースを検索したい
-
あいまい検索で英文字の全角半...
-
顧客データベースを作る場合、...
-
select文のwhere句に配列を入れ...
-
INSERT文などの列名などの半角...
-
ストアドの戻り値で配列を返す方法
-
末尾の全角スペースの削除
-
SQLServer2005のストアドプロシ...
-
Trimの使い方
-
外部結合で取得した項目にNVL関数
-
ORACLEの「DECODE」と同じ意味...
-
WHERE条件の最終桁のスペースに...
-
DTSパッケージについて
-
SQL SERVER 2005 にて全テーブ...
-
セッション変数に格納されてい...
-
Oracleのスペース文字について。
-
phpMyAdminの使い方(SQL文記述)
-
文字列置換
-
可変長多次元配列でのソートに...
-
SUBSTR関数の結果が予想と異なる
おすすめ情報