Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

データ型に応じた、書式や値の制御 #1

Open
kamisono-bb opened this issue Oct 13, 2014 · 0 comments
Open

データ型に応じた、書式や値の制御 #1

kamisono-bb opened this issue Oct 13, 2014 · 0 comments

Comments

@kamisono-bb
Copy link
Contributor

GoogleGroupからの転記
https://groups.google.com/forum/#!topic/excella/40g8ucUhKes

(1) 書式が異なる場合は、例外ではなくnullでデータベースに格納したい場合がある
データ挿入(SQL)の定義シートで、データ型を「数値」や「日付」にした場合、書式が異なると
以下のような例外が発生します。

WARN 2010-04-20 09:32:31,560 [main] データ挿入(SQL)処理中に例外が発生しました
Sheet[データ挿入(SQL)] Cell[179,1] Message[値が数値ではありません: ]

WARN 2010-04-20 17:22:10,044 [main] データ挿入(SQL)処理中に例外が発生しました
Sheet[データ挿入(SQL)] Cell[181,1] Message[値が日付ではありません: ]

大半は間違って半角スペースなどが入っていたり、マークとして何らかの文字を入れているケース
ですので、そういったレコードの値は null にしてinsert文を作れると便利です。
勿論例外として処理を終わらせたい時もありますので、定義シート等で指定できるとベストです。

(2) データ型が「文字列」の列に数字が入っている場合の値の制御
例えば、セルに「12345」といった数字のコードを入れていて、これを文字列としてデータベースに
格納したいケースがよくあります。しかし、これをそのまま実行すると、

insert into company (company_code) values ('12345.0');

のように、insert文のvalueに「.0」が付与されてしまいます。
(セルの書式を文字列にしても「.0」が付与されます。)

さすがに頭に「'」を付けていくのは面倒ですので、今のところはExcelの「データ」⇒「区切り位> 置」で
列のデータ形式を文字列に設定することで回避しています。
ただ、データ型を「文字列」に指定しているので、わざわざそういった調整をしなくても済めば良いと思います。
これはExcel側の問題かもしれませんが、可能でしたら ExCella Trans 側で対応できると助かります。

(3) データ型が「文字列」の列に「'」が入っている場合、自動で「''」に変換
海外の社名などが移行対象の場合、「'」(半角のシングルクォート)が時々出てきます。
当然そのまま ExCella Trans でinsert文を作ったらエラーになりますので、手で「''」のようにエスケープ
することで回避しています。
しかし、この作業は結構手間がかかるので、定義シート等で指定した列については自動で変換、といった
機能があると便利です。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant