質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
INSERT

INSERTとは、行を追加する、コンピュータのデータベース言語SQLにおけるデータ操作言語(DML)ステートメントの1つである

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

Q&A

解決済

1回答

4842閲覧

MYSQL Load data infileのエラースキップ処理

FujiCandy

総合スコア13

INSERT

INSERTとは、行を追加する、コンピュータのデータベース言語SQLにおけるデータ操作言語(DML)ステートメントの1つである

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

0グッド

0クリップ

投稿2020/03/24 05:34

MysqlのLoad Data INFILEで
型違い・桁違いのエラーとなる行をスキップしたいと考えております。

LOAD DATA INFILE内での処理は可能なのでしょうか。
一つの逃げ道としては、何でも入る中間テーブル用意して、
そこから本テーブルへのInsertをしたほうがよいのかと考えてます。

前提として
1.キー項目なのでデータ自体を編集して入れることはできない。
2.型を変えるのはNG
3.元データ(CSV)は直せない。
4.エラーにより、該当レコードをスキップしたことがわからなくてもよい。

Mysqlのバージョンは、5.7です。

SQL

1CREATE TABLE AAA 2( 3id SMALLINT UNSIGNED NOT NULL, 4name VARCHAR(40), 5PRIMARY KEY (id) 6) 7; 8 9SET character_set_database=cp932; 10LOAD DATA INFILE 'C:\Work\AAA.CSV' REPLACE INTO TABLE AAA 11 FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '\r\n' IGNORE 1 LINES 12(@id,@name) 13SET 14 id = @id, 15 name = @name;

AAA.CSVの中身

1"id","name" 2"1","AAA" 3"S123","BBB" 4"3","CCC"

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

エラーがないように書くしかないので姑息な対応しても仕方ないような
気はしますが、テンポラリテーブルをつくって流し込んで、
そこからinsert ignore intoで本ちゃんに流し込む感じですかね・・・

投稿2020/03/24 09:37

yambejp

総合スコア116724

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yambejp

2020/03/24 11:07

create temporary table bbb(id text,name text); load data ・・・・; insert ignore into aaa select * from bbb;
FujiCandy

2020/03/26 02:04

ありがとうございます。 私も姑息だとは思いますが、テンポラリ作るしかないですね。 insert ignoreは初めてしりましたので、活用させていただきます。
yambejp

2020/03/26 02:06

一部テキスト型を数値型に流し込むとえらーではなく「0」 と認識されるケースがあることだけ考慮ください
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問