0

簡単な検索を行ったところ、このエラーは文字列であるはずの数値を読み込もうとした結果だと言う人もいましたか? 私はアルファ文字を持っていません。後ですべての列の最小/最大/平均を見つけるので、それらを文字列にする必要があります。

エラー:

-- 行 1 ~ 50 の挿入に失敗しました
--ORA-01722:

23 列のデータ (0 を含む) の無効な番号 1 行:

25:33.5 - - - - - - -1.23 6.56 6.93 0 - - - - - 998.26 - - - - - - - 183.2 2.35 - 840 - - - - - - 1.56 -1.56 0 - - 0 - - - - - - - - 0 84.2 - 47.97 - - - - - - - - - - - 0.81 0.48 - - - - - 0 11.37 4.5 -10.05 - - 13.3

列の場合:

INSERT INTO CAR_LOGS (DEVICE_TIME, GX, GY, GZ, G_CALIBRATE, BAROMETER, ENGINE_COOL, ENGINE_LOAD, ENGINE_RPM, FUEL_TRIM_BANK1_LONG, FUEL_TRIM_BANK1_SENSOR1, FUEL_TRIM_BANK1_SENSOR2, FUEL_TRIM_BANK1_SHORT, GPS_VS_OBD_SPEED_DIFF, AIR_INTAKE_TEMP, MASS_AIR_FLOW_RATE, O2_VOLTS_BANK1_SENSOR1, O2_VOLTS_BANK1_SENSOR2, SPEED, THROTTLE_POSITION, TIMING_ADVANCE, TURBO_BOOST_VACUUM_GUAGE, VOLTAGE) 
VALUES (27-Sep-2016 19:25:33.467,-1.23,6.56,6.93,-0.0,998.26,183.2,2.35,840.0,1.56,-1.56,0.0,0.0,0.0,84.2,47.97,0.81,0.48,0.0,11.37,4.5,-10.05,13.3);

このファイルには 8,000 行のデータがあり、もちろんすべてで失敗しました。私はSQLにかなり慣れていません。私の父は db の専門家で、私は学校/db でプログラミングを学んでいます。Oracle SQLを使用して、csvファイルをテーブルに直接インポートして、列を正しく選択してみました。

また、私は 20 個のファイルを持っています...それらをすべて同じ方法でロードする方法について新人に何かアドバイスはありますか?

私が見つけた:

LOAD
  DATA 
cd path  
cat file*.csv > all_files.csv
  APPEND INTO TABLE TBL_DATA_FILE
    EVALUATE CHECK_CONSTRAINTS
    REENABLE DISABLED_CONSTRAINTS
    EXCEPTIONS EXCEPTION_TABLE
  FIELDS TERMINATED BY "," 
  OPTIONALLY ENCLOSED BY '"'
  TRAILING NULLCOLS
  ( 
    COL0,
    COL1,
    COL2,
    COL3,
    COL4
  );

パスを次のように置き換えますか

C:\Users\c_thu\Desktop\Database\CarLogsSEPT.2016

またはパスという単語の直後に付けますか?

私が推測する2つの質問ですが、私は本当にこのエラーを理解したいだけです。2番目の質問はまあです。

4

2 に答える 2

0

問題は、なしで時間を費やしていることsingle quotesです。以下で試してみてください。

 INSERT INTO CAR_LOGS (DEVICE_TIME,
                      GX,
                      GY,
                      GZ,
                      G_CALIBRATE,
                      BAROMETER,
                      ENGINE_COOL,
                      ENGINE_LOAD,
                      ENGINE_RPM,
                      FUEL_TRIM_BANK1_LONG,
                      FUEL_TRIM_BANK1_SENSOR1,
                      FUEL_TRIM_BANK1_SENSOR2,
                      FUEL_TRIM_BANK1_SHORT,
                      GPS_VS_OBD_SPEED_DIFF,
                      AIR_INTAKE_TEMP,
                      MASS_AIR_FLOW_RATE,
                      O2_VOLTS_BANK1_SENSOR1,
                      O2_VOLTS_BANK1_SENSOR2,
                      SPEED,
                      THROTTLE_POSITION,
                      TIMING_ADVANCE,
                      TURBO_BOOST_VACUUM_GUAGE,
                      VOLTAGE)
        VALUES (
                  TO_TIMESTAMP ('27-Sep-2016 19:25:33.467',
                                'dd-mon-yyyy HH24:MI:SS.FF'),
                  -1.23,
                  6.56,
                  6.93,
                  -0.0,
                  998.26,
                  183.2,
                  2.35,
                  840.0,
                  1.56,
                  -1.56,
                  0.0,
                  0.0,
                  0.0,
                  84.2,
                  47.97,
                  0.81,
                  0.48,
                  0.0,
                  11.37,
                  4.5,
                  -10.05,
                  13.3);

クイックデモ:

CREATE TABLE CAR_LOGS
(
   DEVICE_TIME   TIMESTAMP, --datatype of column has to be  timestamp to show milliseconds
   GX            NUMBER,
   GY            NUMBER,
   GZ            NUMBER
);

レコード挿入;

INSERT INTO CAR_LOGS (DEVICE_TIME,
                      GX,
                      GY,
                      GZ)
        VALUES (
                  TO_TIMESTAMP ('27-Sep-2016 19:25:33.467',
                                'dd-mon-yyyy HH24:MI:SS.FF'),
                  -1.23,
                  6.56,
                  6.93);
于 2016-09-30T07:37:14.787 に答える
0

このようなエラーは、数値に変換できない数値列の値に挿入しようとしていることを意味します。テーブルの説明を教えてください。to_date('27-Sep-2016 19:25:33.467','dd-mon-yyyy hh24:mi:ss') 2016 年 9 月 27 日 19:25:33.467 を投稿するだけでなく、日付を挿入するときに使用してください 。to_date 関数でフォーマットを指定せずに日付を挿入しないでください。現在のセッション中の日付の形式を示す NLS_DATE_FORMAT パラメータがあります。ただし、このパラメーターはセッションに依存するため、to_date を使用しない場合、コードは他のクライアントでは機能しません。

于 2016-09-30T07:45:45.287 に答える