無知ですみませんが、本当に困っているので教えていただけると助かります。 1 / クリップ 下記を投入しました。
前回、MySQLのデータをシェルの変数に入れるという件で質問しましたが、
===== insert文 =====
↓ファイルの内容↓
2 egg
仕事である機関が提供するデータをMySQLで扱うのですが、上手くいかなくて困っています。 入力を下記の様に定義しました。
データベースからSELECTで抽出したデータを別のテーブルにINSERTするSQLを実行したのですが、
load data infile "item.csv" into table item fields terminated by ',';
※\Nを入力するとNULLになるという情報があったため、
でしょうか。
item6 VARCHAR (16) NOT NULL,
| Field | Type | Null | Key | Default | Extra |
ただ、そのケースは BULK INSERT時にオートインクリメントされる値が、大きく飛んでしまうというものであり、数値定数で格納する場合は該当しません。
(2)提示された表定義で、実際にテストしているか
WHEN TIMEDIFF(TIMEDIFF(end_time,start_time),break_time)<='08:00:00' THEN NULL csv:フィールドA、フィールドB、フィールドC、フィールドD、フィールドE、フィールドF 2, 【募集】 そのようなことはできないのでしょうか?
+-----+------+
エラーの内容を翻訳してみたところ、
name start_time end_time break_time
auto_incrementの値のセットは上手く行きました。また、タブの件に付
| item5 | varchar(64) | YES | | NULL | |
上記のようにuser_idの情報が5にとぶのはなぜなのか、また解決策があれば、ご教授お願いします。 | Field | Type | Null | Key | Default | Extra |
と言う事はload data infileでは連番を作れないと言う事でしょうか。 CSVファイルをインポートしようとして、四苦八苦しています。item.csvというファイルをitemという名前のテーブルにインポートしようとしています。
宜しくお願いします。, load data infileでは、入力のデータが先頭にタブがあると読んでくれません。これは、データの型に問題があるのでしょうか。
+-----+------+
フィールドF→カラム5 で読み込むのですが、一部の行がスキップされてしまいます。
・・・auto_incrementを指定した列に、1以上の数値定数を必ず格納するように入力ファイルを作っているか?
ってやって、file権限があるかどうか調べてくだされ, mysqlでUSER_TABLとUSER_CHK_TABL一致しないデータ全てを出力したいのですがmysqlだと『NOT EXISTS』が使えないので困ってます。
追加で申し訳ありませんが。宜しくお願いします。, 「LINE テスト」に関するQ&A: 不謹慎なことを言ってしまったきがします。 学校が同じ友達とLINEをしていて、テストの話になりました, 有難う御座います。 私はなにか、とんてもない勘違いをしているのでしょうか?かなりの時間試行錯誤しているのですが、一向にわかりません。。。
TEXT="TEST"
と入力すると、
1,apple
MYSQLのカラムに設定しておくと自動的に連番を降ってくれる「auto_increment」。 ユニークIDによく使用され、値を指定しなくともレコードを追加する度に「最大値+1」の番号を自動的に降ってくれます。 ただし若干不便なところもあります。 5,baseball
仕事である機関が提供するデータをMySQLで扱うのですが、上手くいかなくて困っています。 echo "INSERT INTO test.test (num ,text) VALUES ('$NUM', '$TEXT');" | mysql -u root -ppassword
MySQL 3.23.4 以降なら
CREATE TABLE hoge (
益々分からなくなって来ました。 投稿 2016/12/25 17:20 +-----+------+
2 rows in set (0.01 sec)
一般的な人間の思考でいくと綺麗な連番になっていてほしいものですが、実際は値が飛び飛びになっていたりすることが多いですよね。, REPLACEなどは挙動をよく理解しておかないと致命的なことになりかねません。特にオートインクリメントしたidをサロゲートキーとして使っている場合は。「マニュアル読め」と言われればそれまでですが、一般的な人間の感覚からはだいぶズレた「MySQL(DB全般?)特有の動作」と言っていいのではないでしょうか。, 参考:【MySQL】AUTO_INCREMENTの値が増える、飛ぶ、欠番が発生する at softelメモ, たとえば item1 VARCHAR (64) NOT NULL,
INSERT INTO tblA (dataA1, dataA2, dataA3, dataA4) SELECT "9001","AA",dataB1,dataB2 FROM tblB WHERE dataB1 = 52
item1 VARCHAR (64) NOT NULL,
・・・MySQL5とかでなく、MySQL 5.1.36といった番号まで。
それ以外の方法は残念ながら思いつきません。, おはようございます。
教えて頂けると助かります。
これで終わります。有難う御座いました。, 有難う御座います。 insert into hoge (item1, item2, item3, item4, item5, item6)
'\r\n'' at line 1
です
よろしくお願いします。, ↓のような事?
| text | varchar(255) | | | | |
7 rows in set (0.00 sec)
ERROR 1136 (21S01) at line 1: Column count doesn't match value count at row 1
Webをいろいろ漁って、AUTO_INCREMENTの属性は明示的に指定しないようだと理解しました。冗長で申し訳ないのですが、エラーが出た状態のものを、そのまま掲載させていただきます(テーブル名や属性名のみ変更しました)。
お客様の許可なしに外部サービスに投稿することはございませんのでご安心ください。, 不謹慎なことを言ってしまったきがします。 学校が同じ友達とLINEをしていて、テストの話になりました, GRANTステートメントによるユーザー追加について(LOAD DATA INFILEの権限), LOAD DATA INFILE で最初のカラム以外がロードされないで NULL になってしまう, ERROR1062:Duplicate entry.....というエラーが出てしまいました.
5,baseball
上記のようにuser_idの情報が5にとぶのはなぜなのか . とコマンドを入力すると、
mailのテーブルは下記の様に定義をしています。
長文大変申し訳ありません。よろしくお願いします。, mysql5.0.27(RedhatLinux 9)です。
2. id int
ラムを指定してやりましたが今度は別のエラーが出ました。
"1";"2";"3";"4";\N
また、word_list1.csv の内容をインポートするデータベース側のテーブルは下記のコマンドにより定義されています
+-------+--------------+------+-----+---------+-------+
(1)MySQLのバージョン
auto_incrementは現時点のデータとは別に、次に追加されるIDを記憶しています。
oracleならこんな感じかと思ったのですが。。。
ヘルプなどを見ても特定のフィールドのみを選択する方法がよく分かりません ) ENGINE=InnoDB;
auto_incrementとは、指定したカラム(フィールド)に対してデータが追加されると、mysqlが一意の値を自動的に付与する機能のこと。 カラムに登録されたデータに連番を自動で付ける際に便利です。 auto_incrementの使い方・設定方法 ○空のテーブル
この値を最初の1から始まる様に値をセットし直すと言う事は出来るの
・文字コードや改行コードで、正常にインポートできない行があった (5)CREATE TABLE後、LOAD DATA INFILE文を何度か実行したり、エラーになったりしていないか
みたいなカラムがあるテーブルに「田中、鈴木、田中、山田」というデータを入れるために, を投げると、id値は「1,2,4」となります。 出来る方法は無いのでしょうか。, 済みません、さっきのはカラムを指定していませんでした。今回再度カ
load data infile "item.csv" into table item fields terminated by ',';
フィールド区切り記号 ;
よろしくお願いします。, オプションは順に記述する必要があるので、後ろではなく、変数指定の前(テーブル名の後)に記述する必要があります。 というエラーが返されます。
auto_incrementはレコードをconstに特定するためだけに利用すべきものです C:/hole_problem/word_list1.csv
| item3 | varchar(32) | NO | MUL | | |
MySQLでDBにデータを追加する際、すでに同じデータがあるかどうかを調べたいです。 例えばtableAというテーブルがあったとします。key int auto_increment data1 int data2 varchar(16) data3 int ... datan int created datetime これに対して、こんなSQLを実行するとします。 お詳しい方がいらっしゃいましたら、アドバイスをいただけませんでしょうか?よろしくお願いいたします。
| text | varchar(255) | | | | |
様々な場面で、AUTO_INCREMENTを設定した主キーの値が意図したとおりの動作にならずに困ることがあります。, 「SELECTしてその値が無かったらINSERT」は多くの人が望んでいる、「よくある動作」かと思われます。 0, 回答 フィールドD→カラム4 ・プライマリーキー、ユニークインデックスがあって重複行がスキップされた。 ・下記のinsert文で、その下のエラーメッセージが出て、データを登録できない。
CASEにこだわるなら、WHENで条件外をしぼってELSEで実数を得ればよいかも 相対パスやサーバがどの程度の階層まで検索してくれるのか解らないので、絶対パスでも指定してみましたが、全く同じエラーが返されてきました。
というエラーが返されます。そこで、
item4 VARCHAR (64),
+-------+--------------+------+-----+---------+-------+
"1";"2";"3";"4";"\N"
item5 VARCHAR (64),
ざっくり今回のだとこんな感じ?
Webをいろいろ漁って、AUTO_INCREMENTの属性は明示的に指定しないようだと理解しました。冗長で申し訳ないのですが、エラーが出た状態のものを、そのまま掲載させていただきます(テーブル名や属性名のみ変更しました)。
なぜそういう実装になっているかの歴史的経緯は知りませんが、 あるいはprimary keyの指定が、質問中に記された通りでなく、2件以上検索されているかです。
フィールド囲み記号 "", MySQLのLOAD文を使ってCSVファイルの内容をデータベースにインポートしたいと思っています。
藤原 9:00 18:00 1:00, AかつBならIFをつかってANDでつなげばいい気がしますが・・・ 2,egg
TABLE構造はUSER_TABLとUSER_CHK_TABLも下記です。
id int この状態でload data infileで、idに連番を付加したいのですが。出来る方法は無いのでしょうか。>先頭がタブであっても先頭と末尾にダブルクォーテーションは付けて 3,music
1 以外の auto_increment 値で開始するには、次のように、その値を create table または alter table でセットします。. CREATE INDEX IDX_HOGE_4 ON hoge(item4);
いては通常は有り得ないパターンをセットして正常になりました。例え
tblBの主キー:dataB1
0, 回答 ですが、これを日常的に使うくらいなら、 の両方を試みましたが、入力結果は「0」でした。
でしょうか。あるいは、自分でそれなりの変数をセットするしか方法は item1 VARCHAR (64) NOT NULL,
item3 VARCHAR (64) NOT NULL,
1 row in set (0.00 sec), ↓のような事?
○テーブルの確認(mysqlコマンド)
id INT AUTO_INCREMENT...続きを読む, #1です。
innodb テーブルでは、一連の insert ステートメントの途中で自動インクリメント値を含むカラムを修正する場合は注意が必要です。 以下の情報を追加しました。もちろん、auto_incrementをつけてるので問題なく1~4のidがuser_idカラムに追加されましたが、, ○質問 item6 VARCHAR (64) NOT NULL,
alfheim# cat mysql.sh
values ( 'data1','data2', 'data3', 'data4', 'data5', 'data6');
【実行したSQL】
csvからNULL値をインポートする方法をご教授下さい。
1,apple
>抽出されてくるデータは常に1件なので問題ないと期待していました
ただ、そのケースは BULK INSERT時にオートインクリメントされる値が、大きく飛んでしまうというものであり、数値定数で格納する場合は該当しません。
| item4 | varchar(64) | YES | MUL | NULL | |
| id | mediumint(8) unsigned | NO | PRI | NULL | auto_increment |
たとえば #1のSQLのテーブルを逆にしたら、
フィールドA→カラム2 コマンドはエラーなどなく正常に実行されましたが、実行後にデータベースを参照すると下記のようになっています
+---------------------+-----------------------+------+-----+---------+----------------+
| 0 | TEST |
というエラーが返されます。そこで、
いつもお世話になっております。selfesteemです。
という風に選択したいのですがどういう風に指定したらいいのでしょうか? ファイル名:word_list1.csv
WHEN end_time<'22:00:00' THEN NULL
○テーブルへの追加確認(mysqlコマンド)
どちらにせよ、MySQLのバージョン、テーブル定義、読み込むファイルや作業手順等分からないことだらけですので、原因は判断できませんが…, load data local infileでcsvをインポートしているのですが 「ユーザー:『****@localhost』(パスワード:YESを使うこと)のために許されないアクセス」
item3 VARCHAR (32) NOT NULL,
LEFT JOIN をして、USER_CHK_TABLに該当するレコードがない場合、カラムの値がNullになることを利用したSQLです。
+-------+--------------+------+-----+---------+-------+
| num | text |
load data local infile "item.csv" into table item fields terminated by ',';
| item2 | varchar(64) | NO | MUL | | |
・・・MySQL5とかでなく、MySQL 5.1.36といった番号まで。
item6 VARCHAR (16) NOT NULL,
2.ALTER TABLE文でAUTO INCREMENTを設定します。 構文:ALTER TABLE {テーブル名} MODIFY {AUTO INCREMENTを設定するカラム名} {カラムのデータ型} AUTO_INCREMENT; mysql> alter table item modify id int auto_increment; これでidにAUTO INCREMENTを設定することができました。 AUTO INCREMENTの採番について MySQL クライアントのバージョン: 5.0.18
作成した word_list1.csv の保存場所は
UNION がつかえれば、くっつけておしまいなんでしょうけど。
+-------+--------------+------+-----+---------+-------+
item5 VARCHAR (64),
where NOT EXISTS (select * from USER_CHK_TABL), >ご回答頂いたSQLはUSER_TABLに存在しUSER_CHK_TABLに存在しないレコードが全て抽出可能ですか?
#./mysql.sh
LINES TERMINATED BY '¥r¥n' IGNORE 1 LINES それともデータベースとはそういうものなのだ、と諦めるしかないのでしょうか?, 参考:kamipo TRADITIONALでは防げないINSERT IGNOREという名の化け物 | おそらくはそれさえも平凡な日々, 参考:songmuさんのツイート: "我々は何故2015年にもなってSELECTして無かったらINSERTする場合のベストパターンを確立できていないのか。", teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。, 評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。, 上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。, 諦めましょう。 CREATE INDEX IDX_HOGE_2 ON hoge(item2);
先頭がタブであってもそれ以降にはきちんとデータはあります。そのデータを読んではくれません。何が問題なのでしょうか。
http://bugs.mysql.com/bug.php?id=45960
+---------------------+-----------------------+------+-----+---------+----------------+
↑全て同じにしてみたらいかがでしょうか?
#!/bin/sh
item2 VARCHAR (64) NOT NULL,
id AUTO_INCREMENT 主キー 35 apple
・カラムの型やNOT NULL制約に引っかかった 4 movie
CREATE TABLE word_list(
name VARCHAR(50) NOT NULL,
| item6 | varchar(16) | NO | MUL | | |