ホーム › フォーラム › A5:SQL Mk-2掲示板 › number型のインポートエラー
- このトピックには14件の返信、2人の参加者があり、最後ににより11ヶ月、 1週前に更新されました。
-
投稿者投稿
-
荒木ゲスト
お世話になります。
本番環境から一括エクスポートして保守環境に連続インポートするという作業をしようとしたところ、number(13,0)のカラムにおいて格納された整数が9桁だとインポートできますが10桁だと「’XXXXXXXXXX’は整数ではありません」というエラーが出てインポートが止まります。
ver2.13.3 64bitではエラーは出ずインポートできました。最新版ではないので修正済かもしれませんが、修正内容からは読み取れなかったのでご連絡しました。
環境
データベース Oracle Database 12c Standard Edition Release 12.1.0.2.0 – 64bit Production
データベースキャラクタセット JA16SJISTILDE
各国語キャラクタセット AL16UTF16
A5:SQL Mk-2 version 2.14.0 rc3 64bit
OracleInstantClient x64 12.2.0.1.0松原正和キーマスター荒木さんこんにちは。
はい、インポート処理を高速化した際にデグレードしてしまっていたようです。次のリリース候補版で修正したいと思いますので少々お待ちください。荒木ゲスト2.14.0 rc6 64bitにおいて「複数行インサートを使用する」のチェックを外してインポートしたところ、エラーが出ずインポートできました。ありがとうございました。
ただ、実は「複数行インサートを使用する」のチェックをつけて2レコード以上同時にインポートしようとすると「The parameter has different data type」というエラーが出てインポートできないというエラーも発生しており、こちらはそのままでした。同じ理由のエラーと思い報告しておりませんでした。申し訳ありませんがこちらも調べていただけないでしょうか。
最初のエラーのように不具合のあるフィールドが示されておらず、こちらがどういった情報を提示すればよいのかわからなかったので、対象テーブルの情報をお伝えします。
・レコード数1395行
・各カラムのデータ型
NUMBER(4, 0)
NUMBER(1, 0)
NUMBER(3, 0)
NUMBER(2, 0)
NUMBER(3, 0)
NUMBER(3, 0)
NUMBER(8, 0)
NUMBER(2, 0)
NUMBER(13, 0)
CHAR(100)
CHAR(14)
NUMBER(13, 0)
NUMBER(13, 0)
NUMBER(13, 0)
CHAR(28)
NUMBER(1, 0)
CHAR(10)
CHAR(10)
CHAR(8)
CHAR(8)
CHAR(10)
CHAR(8)
CHAR(8)
NUMBER(3, 0)
NUMBER(10, 0)松原正和キーマスター荒木さんこんにちは。
特定条件下で小さい桁の数値型が正しくインポートできない不具合があるようでした。Version 2.14.0 rc7で修正してみましたのでお試しいただければと思います。
荒木ゲスト2.14.0 rc7 64bitで試しましたが、「’XXXXXXXXXX’は整数ではありません」のエラーが発生しました。
値が2147483647だと正常終了し、2147483648だとエラーが出ます。エラー内容をまとめますと
エラーA「The parameter has different data type」
エラーB「’XXXXXXXXXX’は整数ではありません」
としたときに
rc3 複数行インサート:A、単行インサート:B
rc6 複数行インサート:A、単行インサート:正常終了
rc7 複数行インサート:B、単行インサート:B
という状況です。松原正和キーマスター荒木さんこんにちは。
前回の修正に64bit整数を読み込む際の不具合があったので2019/1/14 公開予定のVersion 2.14.0 rc 8 で修正しますのでお試しいただければと思います。荒木ゲスト2.14.0 rc8 64bitを試しました。
上で挙げたテーブルはインポートできるようになりましたが、、別のテーブルで複数行インサートでエラーA、単行インサートで正常終了しました。
テーブルのカラムは以下のとおりです。
NUMBER(4, 0)
NUMBER(1, 0)
NUMBER(3, 0)
NUMBER(2, 0)
NUMBER(3, 0)
NUMBER(3, 0)
NUMBER(3, 0)
CHAR(80) 全角40文字
CHAR(10) 半角数字10桁
CHAR(20) 全角10字
CHAR(10) 半角数字10桁
CHAR(10) 半角数字10桁
CHAR(20) 全角10字
NUMBER(2, 0)
NUMBER(1, 0)
NUMBER(12, 0)
NUMBER(12, 0)
NUMBER(12, 0)
NUMBER(2, 0)
NUMBER(1, 0)
NUMBER(1, 0)
NUMBER(1, 0)
NUMBER(2, 0)
NUMBER(1, 0)
NUMBER(1, 0)
NUMBER(1, 0)
NUMBER(1, 0)
NUMBER(1, 0)
NUMBER(1, 0)
NUMBER(10, 9)
NUMBER(12, 0)
NUMBER(12, 0)
NUMBER(12, 0)
NUMBER(12, 0)
NUMBER(10, 0)
CHAR(60) 全角30字
NUMBER(8, 0)
NUMBER(8, 0)
NUMBER(4, 0)
NUMBER(8, 0)
NUMBER(8, 0)
CHAR(100) 全角50字
CHAR(100) 全角50字
CHAR(100) 全角50字
CHAR(100) 全角50字
NUMBER(1, 0)
NUMBER(1, 0)
NUMBER(1, 0)
CHAR(10) 半角10字
CHAR(10) 半角数字10桁
CHAR(8) 半角数字8桁
CHAR(8) 半角数字8桁
CHAR(10) 半角数字10桁
CHAR(8) 半角数字8桁
CHAR(8) 半角数字8桁
NUMBER(3, 0)
NUMBER(10, 0)
(長さセマンティクス:バイト・セマンティクス)char型を半角aで埋めたり、number型を1にしたり等試してみましたが、エラーを出さない値を見つけることができませんでした。
松原正和キーマスター荒木さんこんにちは。
どうも、Oracle(ほかいくつかのデータベースも含むかも?)で桁数の大きな数値型を扱うときの問題の様でした。
どうも、複数行インサートの機能は特定のデータベースの特定のデータ型で不具合を起こしがちなのかもしれないです…。もうちょっと信頼性上げたいですね…。荒木ゲスト了解しました。
単行インサートは使えるようになり十分な速度が出ているので利用には問題ありません。
ご対応いただきありがとうございます。荒木ゲスト2.14.0 rc9 64bitで試したところ、2つ目のテーブルで複数行インサートができるようになりました。
ありがとうございました。うちむらゲストOracleのテーブルで、number(15) のカラムに
0.5
をインポートしようとすると、
「0.5は整数ではありません」
のエラーになりました。複数行インサート のチェックをはずしても同様です。
カラム定義を number(15.1) にしたら、インポートできました。
うちむらゲスト最新バージョンでも同様であることを確認済みです。
a5m2_2.17.4_x64松原正和キーマスターうちむらさんこんにちは。
はい、0.5 は number(15)に入れることはできないので、A5:SQL Mk-2ではエラーとなります。自動的に四捨五入や切り捨ては行いません。これは仕様とさせてください。Akira.Shibataゲストお世話になります。
A5-SQL Mk-2 64Bit Portable mode Ver.2.17.0 を利用中です。CSVからテーブルにインポートをしていてエラーでインポートが不成功となります。
1000件単位の複数行インサートでは ”は浮動小数点ではありません のエラーとなります。
1件単位でインポートすると、SQLSTATE=22001(文字列項目の桁あふれ)のエラーとなります。
この違いは何でしょうか?以上、お手数ですがお知らせ願います。
松原正和キーマスターAkira.Shibata さんこんにちは。
複数行インサートと1行単位のインサートでは生成するSQLを変えているのですが、これのためにエラーの表示内容が変わっているのだと思います。
実際なぜエラーが起こっているのかについては、RDBMSの種類やサンプルとなるCSVなどあるとありがたいです。 -
投稿者投稿