• ベストアンサー

SQLローダーで複数のCSVファイルのデータを一つのテーブルにInsertしたい

yujiの回答

  • yuji
  • ベストアンサー率37% (64/169)
回答No.1

TRUNCATE ではなく APPEND を使えば 追加でデータがロードできます。 マニュアルに書いていますよ。 ちゃんと読みましょう。

関連するQ&A

  • SQLローダーCSV取込で、囲み文字がデータ中に入っている場合について

    SQLローダーCSV取込で、囲み文字がデータ中に入っている場合について お世話になります。 SQLローダーでCSV取込を行っています。 設定は下記のようになっており、区切り文字はコンマ  囲み文字はダブルコーテーションを指定しています。 LOAD DATA TRUNCATE CONTINUEIF LAST != '"' INTO TABLE WORKTABLE FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' TRAILING NULLCOLS ( data1 char, data2 char, data3 char ) このように取り込んだところ、下記のような行でエラーが発生しました。 「"data1","data2",""文字列,文字列""」 どうやら元々ダブルコーテーションで囲まれていたデータが CSV出力時にもう1度囲まれた状態のようです。 エラー内容 「TERMINATEDとENCLOSEDフィールドに続く終了記号がありません。」 原因はダブルコートであることはわかっています。 色々試したのですが、うまくいきません。 このデータをうまく取り込む方法はあるのでしょうか よろしくお願いいたします。

  • 大量データ(csv)ファイルのインサート

    1分に1回レコードが出力されたログファイルがあります。 これはCSV形式のファイルです。ファイルは15ファイルあります。 各ファイルの列数は違っていて60~260まであります。 必要なデータが記録されている列もファイルによって違いますが 各ファイルともいらない列が半分くらいありデータは無いか"-"になっています。 データは大体整数4桁小数2桁の数値です。 毎月一回集計しないといけないので各ファイルに対応したテーブルを作り データを読み込みたいと思います。 過去分を持つとレコード数が増えるので毎回読み込みからにしたいと思います。 データをテーブルに取り込むやり方を考えています。 VBでシステムを作っているのでファイルを1行ずつ読み 必要なデータをインサートするのがいいのか SQLServerの機能を使って全部読み込むのがいいのか 何を調べて判断すればいいのかアドバイスをお願いします。 VBは2008でSQLServerも2008でやろうかと考えています。

  • CSV fileを指定してSQLへimport

    現在どうにかしてCSV fileのある一定の行と列を除いて SQLへimport出来ないかと困っています。 内容は: Excelで記入欄を作り他の人に記入してもらい 記入欄に記入してもらった情報を 反映させたいSQLのテーブル反映させたい。 環境 Win全般 dbisql Notepadに書いたtest-sql構文です --## test-import insert into test.test_def(obj_num, name_1, name_2, etc_1, etc_2) --##ここで指定したいSQLテーブルを指定し LOAD DATA INFILE 'd:\\test\\test.csv' --##ここで読み込ませたいCSVファイルを指定し FIELDS TERMINATED BY ',', LINES TERMINATED BY '\r\n' --##ここでCSVの形式を認識させ with(a,"b" filler, ・・・・と この辺で行き詰っています。。。 列1と行Aには入力してもらいたい説明を入力したいです。 (importしたくない列と行になります) 列2以降の行Bから行Gまでの5つの情報をimportしたいという状況です。 (列3、列4と次々B、C、D、E、F、Gに入力してもらう) 状況が解り難かったらすみません。 よろしくお願いします。

  • CSVファイルを毎日、全レコード一括更新したい

    毎日、CSV形式で送られてくる最新のデータがあります。 それを自動的にMySQLに一括で追加・更新したいと考えています。 CSVファイルは毎日、データが追加されたり、UPDATEされたり、削除されたりしています。そのCSVファイルのデータを神様DBとして、上書きしたいと思っています。 つまり、前日のMySQLのデータを本日のデータで完全に上書きしたいと考えています。 単にデータをロードするだけなら mysql> load data infile "ファイルパス/ファイル名.csv" -> into table テーブル名 fields terminated by "," lines terminated by "\n"; でよいと思いますが、完全上書きの方法がよくわかりません。 それとも、上記方法で同じことを2度すると完全に上書きされるのでしょうか?同じレコードが2つ出来上がるのでしょうか?それともマージされるのでしょうか? もし、お分かりでしたらご教授ください。

    • ベストアンサー
    • MySQL
  • CSVファイルをMYSQLにインポート

    先日からMYSQL+PHPの勉強をはじめました。 データベース構築の際、以前作成したCSVファイルをMYSQLのテーブルとして 利用したいと考えております。 そこで、MYSQLコマンドより、 LOAD DATA LOCAL INFILE 'ファイル名.csv' INTO TABLE テーブル名 FIELDS TERMINATED BY ',' LINES TERMINATED BY '\r\n'; Query OK, 0 rows affected (0.04 sec) Records: 102 Deleted: 0 Skipped: 102 Warnings: 0 とCSVファイル自体が悪いのかSQL文に問題がるのかインポートがうまくいきません。。 ちなみにCSVは  0,2011/6/2 0:00,80.94,81.32,80.55,80.92 0,2011/5/25 0:00,81.94,82.17,81.8,81.95 0,2011/5/23 0:00,81.77,82.04,81.32,81.99 環境はphpdevで一括でインストールした phpadmin: バージョン2.3.2 MYSQL: MySQL4 apache: 1.3.27 初心者で基本的な質問かもしれないですがどうかご教授お願いします。

    • ベストアンサー
    • MySQL
  • SQL*Loaderをダイレクトモードで実行

    するにはどうしたらいいのでしょうか? 例えば以下の場合にダイレクトモードでSQL*Loaderするにはどうしたらいいのでしょうか? sqlldr sato/secret control=x.ctl ただし x_table: create table x_table(i number,s varchar(99)); x.ctl: LOAD DATA INFILE 'x.csv' APPEND INTO TABLE x_table FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' TRAILING NULLCOLS ( i,s ) x.csv: 1,"it is iti." 2,"it is ni." 3,"it is san."

  • SQL-Loaderが動かないです。

    みなさんこんにちは 作成されたデータをSQL-Loaderにてオラクルデータベースに取込み を行います。 下記にソースを書きましたが、まずTEST.batファイルを実行し、 TEST.bat側からTEST.ctlを実行し、TEST_WORKテーブルにデータを 格納します。 *****TEST.batの内容***** SQLLDR USERID=TEST1/TEST1@GUEST CONTROL=TEST.ctl LOG=LOG.txt ************************ *****TEST.ctlの内容***** LOAD DATA INFILE 'D:\test1.dat' TRUNCATE PRESERVE BLANKS INTO TABLE TEST_WORK FIELDS TERMINATED BY "|" TRAILING NULLCOLS (KOUMOKU1, KOUMOKU2, KOUMOKU3, KOUMOKU4) ************************ 実際にこれを実行した所、問題なく正常終了しました。 しかし、これをホスト側からFTPにて実行を行うと、 TEST.batが実行されません。もちろんログも出力されません。 ファイルが実行できてないので、ファイルのコピーを行う簡単 なバッチファイルを作成し、ホスト側から実行を行ってもらった 場合、こちらは問題ありませんでした。 となると、SQL-Loaderのソースに何か問題があるのでは?と 思いますが・・・色んなサイトでLoaderのソースを拝見しましたが、 見当がつかないです。 ソースを見て、気になる点や、同じ経験をされた方いらっしゃい ましたら、お知恵をお貸しください。 ちなみに、SQL-Loaderを実行するマシンのOSはWindows2000Proです。 よろしくお願いします。

  • SQLローダーについて

    カンマ区切りで""で囲まれたCSVファイルがあります。 例) "1","東京","おとこ","山田太郎","","","" このデータをOracle 9iデータベースにinsert、updateするプログラムをVBで書いたのですが パフォーマンスが悪いのでSQLローダーでやりたいと考えています。 更新テーブルはひとつなのですが、"東京"なら1、"大阪"なら2、"福岡"なら3というようにデータを突っ込む前に比較・変換する必要があります。 このような場合でも、SQLローダーって使えるんでしょうか? よろしくお願いします。

  • sql*loader 数値のロード

    SQL*LOADERにて NUMBER(3,0)のフィールドに、小数点以下を含む数値をもったデータをロードすると 四捨五入か何かされて整数でデータがロードされてしまいます。 テーブル、CTLファイル、csvレコード、登録結果は以下のとおりです。 テーブル: CREATE TABLE tbl1 ( CLM001 NUMBER(3,0) NOT NULL, CLM002 VARCHAR2(30) ) CTLファイル: LOAD DATA INFILE 'tbl1.csv' BADFILE 'tbl1.bad' TRUNCATE INTO TABLE tbl1 FIELDS TERMINATED BY ',' TRAILING NULLCOLS ( CLM001, CLM002 ) csvレコード: 0.9,aaaaa 3.1,bbbbb 登録結果(SQL*LOADER実行結果): 1,aaaaa 3,bbbbb 小数点を含むデータをロード時にエラーとしたいのですが、何かいい方法ありますでしょうか? 環境はSQL*Loader: Release 9.2.0.1.0になります。

  • CSVのデータを取り込むsql文を自動生成するソフトなど

    いつも大変お世話になっております。 CSVで作成したデータをoacleDBに取り込むソフトは多数ありますが、とりこんだいInsert文を表示させるソフトなどはありますでしょうか? 本番環境のテーブルに数百~数千のデータを追加したいのですが、フリーソフトやCSVファイルはもっていけません。 なのでInsert文をじか打ちするしかないのですが、なにか良い方法はありませんでしょうか? どなたかご教授願います。