- ベストアンサー
LOAD DATA INFILE で最初のカラム以外がロードされないで NULL になってしまう
お世話になります。MySQL勉強中の初心者です。 環境: MySQL5.1 OSX10.4 ターミナル (Winでいう「cmdプロンプト」です) 問題: LOAD DATA INFILE でコマンドは通るのですが、select*from でチェックすると第一カラム(左端)だけは正常にロードされるんですが、残りのカラムがすべて NULL となってしまって切ないです。 ロードしたデータの例: 1011 jan c001 a01 1012 jan c001 a01 1013 jan c002 a03 構造としては、こんな感じです。↓ 文字列[tab]文字列[tab]文字列[tab]文字列[空白スペース?] 現在の結果: | 1011 | NULL | NULL | NULL | | 1012 | NULL | NULL | NULL | | 1013 | NULL | NULL | NULL | 今は小規模なデータだけなのでやむなく手打ちでガコガコ入れてますが、原因を解明したいと思います。 どなたかアドバイス頂けると幸いです。宜しくお願いします。orz れざ
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
その他の回答 (1)
- chukenkenkou
- ベストアンサー率43% (833/1926)
関連するQ&A
- LOAD DATA INFILE での関数の扱い
お世話になります。 LOAD DATA INFILEで扱うデータでNOW()関数を持たせたいのですが、可能でしょうか? 例えば "文字列","文字列","文字列",NOW()\n "文字列","文字列","文字列",NOW()\n というカンマ区切りのデータですが、実行後、属性datetimeの値が0000-00-00 00:00:00となってしまいます。 宜しくお願いします。
- ベストアンサー
- MySQL
- MySQL の load data infile
お世話になります。 MySQL のload data infile ... コマンドを使ってCSVファイルをテーブルに転送することをよくやっていますが、このコマンドには現在あるデータはそのままにして、新たにデータを追加するオプションなどはあるのでしょうか? 今までは空のテーブルにデータを転送していただけですが、既にあるデータに上書きすることなく、追加する方法があれば教えていただきたいと思います。 よろしくお願いいたします。
- ベストアンサー
- MySQL
- LOAD DATA INFILE でエラー起きてデータを一括してロードできません。
はじめまして。 質問があります。 現在WindowsXP Home、MySQL5.0.27を使用しているのですが、 テキストファイルのデータを一括でDBにロードしようとすると、 エラーが起きてしまいます。 ------------------------ Demo01.txt -------------------------- 1,あああ 2,いいい 3,ううう ------------------------ Demo01.sql --------------------------- create table test ( no integer not null, name varchar(30), primary key(no) )type=InnoDB; ---------------------------------------------------------------- mysql> load data low_priority infile 'C:/Demo01.txt' -> replace -> into table test -> fields terminated by ',' -> lines terminated by '/r/n' -> escaped by '\\'; ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use : 'escaped by '\\'' 付近: 6 行目 ---------------------------------------------------------------- 上記のようなエラーが出てしまいますので、試しにescaped by '\\' を削除して実行すると、 ---------------------------------------------------------------- Query OK, 1 row affected (0.09 sec) レコード数: 1 削除: 0 Skipped: 0 Warnings: 0 ---------------------------------------------------------------- と表示され1行しかロードできません。どうしたら全行をロードするこ とができるのでしょうか?どうかご教授お願いします。
- ベストアンサー
- MySQL
- NULLだったら、aカラムの値をbカラムへコピー
■前提 ・MySQLの同じテーブル内に、datetime型の「aカラム」「bカラム」がある ■質問 ・この時、bカラムがNULLだったら、aカラムの値をbカラムへコピーするSQL文を教えてください
- ベストアンサー
- MySQL
- GRANTステートメントによるユーザー追加について(LOAD DATA INFILEの権限)
GRANTステートメントで、「LOAD DATA INFILE」の権限を持ったユーザ(例:kasai)を作成したいのですが、上手くいきません。 mysql> GRANTSELECT,INSERT,UPDATE,DELETE,CREATE,DROP,ALTER,LOAD DATA INFILE ON *.* TO kasai; ERROR 1064: You have an error in your SQL syntax. Check the manual that corresp onds to your MySQL server version for the right syntax to use near 'LOAD DATA IN FILE ON *.* TO kasai' at line 1 何かよい知恵を教えてください
- ベストアンサー
- MySQL
- MySQLのNOT NULL制約について
MySQLでは、あるカラムをNOT NULL制約にしていたとしても、文字列型には空文字が、数値型には0を保存できます。 NULL、空文字、0をそれぞれ区別している仕様自体は問題ないと思いますが、NOT NULL制約のようにあるカラムで特定の値を許可しないような設定でできないのでしょうか。
- ベストアンサー
- MySQL
- 日本語TSVファイルのLOAD DATA INFILE が失敗
日本語(EUCJP)を含むタブ区切りテキストのインポートに失敗しており、 行き詰ってしまいました。考えられる原因等お気付きありましたら、 ご指摘頂ければ助かります。 尚、my.cnfで[mysql], [mysqld], [mysqlimport], [mysqldump]は、 default-character-set=ujis で設定しています。 mysql> select version(); +---------------------+ | version() | +---------------------+ | 5.0.27-standard-log | +---------------------+ 1 row in set (0.00 sec) mysql> LOAD DATA INFILE "/hoge/hoge.csv" INTO TABLE test; Query OK, 5 rows affected, 15 warnings (0.00 sec) Records: 5 Deleted: 0 Skipped: 0 Warnings: 15 mysql> show warnings; +---------+------+-----------------------------------------------+ | Level | Code | Message | +---------+------+-----------------------------------------------+ | Warning | 1265 | Data truncated for column 'mycolumn1' at row 1| | Warning | 1265 | Data truncated for column 'mycolumn2' at row 1| | Warning | 1265 | Data truncated for column 'mycolumn3' at row 1| | Warning | 1265 | Data truncated for column 'mycolumn1' at row 2| | Warning | 1265 | Data truncated for column 'mycolumn2' at row 2| | Warning | 1265 | Data truncated for column 'mycolumn3' at row 2| | Warning | 1265 | Data truncated for column 'mycolumn1' at row 3| | Warning | 1265 | Data truncated for column 'mycolumn2' at row 3| | Warning | 1265 | Data truncated for column 'mycolumn3' at row 3| | Warning | 1265 | Data truncated for column 'mycolumn1' at row 4| | Warning | 1265 | Data truncated for column 'mycolumn2' at row 4| | Warning | 1265 | Data truncated for column 'mycolumn3' at row 4| | Warning | 1265 | Data truncated for column 'mycolumn1' at row 5| | Warning | 1265 | Data truncated for column 'mycolumn2' at row 5| | Warning | 1265 | Data truncated for column 'mycolumn3' at row 5| +---------+------+-----------------------------------------------+ 15 rows in set (0.01 sec) こんな状態です。ちなみに、mycolumn1,2,3のカラムは、 日本語を格納する為のカラムで、varchar(255), text型です。 他のカラムには英数字データが入るのですが、そちらは成功しています。 上記Warning文を見た限りでは、MySQLによりデータが加工されている ようですが。。。。 この問題を解決する為に、他に設定するべきことや、 必要なコマンドがありますでしょうか? またコマンドラインからの、mysqlimportも同様に失敗しました。 日本語テキストのインポートによるテーブルデータ格納は MySQLの仕様的に可能かと思われますが、上記問題がおきてしまいました。 お気付きありましたら、ご指摘いただけたら助かります。
- 締切済み
- MySQL
- BitフィールドにLOAD DATAできない
以下の定義のテーブル(Bitフィールドを持つ)にLOAD DATAでデータを 入れようとしているのですがエラーになり困っています。 マニュアルにあるようにSET句を使用してLOADをしようとしているのですが 「You have an error in your SQL syntax;~」と コマンドの4行目のところで出てしまいます。どこがおかしいのでしょうか。 【テーブルの定義】 mysql> desc data; +-------+----------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-------+----------+------+-----+---------+-------+ | key1 | int(11) | NO | PRI | NULL | | | key2 | int(11) | NO | PRI | NULL | | | date | datetime | NO | PRI | NULL | | | flg1 | bit(1) | NO | | b'1' | | +-------+----------+------+-----+---------+-------+ 【CSVファイルの内容】 1,2,"2016-12-17 10:00:00",1 1,2,"2016-12-17 11:00:00",0 【コマンド】 LOAD DATA INFILE 'C:/csv/data.csv' INTO TABLE test.data (key1, key2, date, @var1) SET flg1 = CAST(@var1 AS SIGNED) FIELDS TERMINATED BY ',' ENCLOSED BY '"';
- 締切済み
- MySQL
- 一つのカラムから、データを分けて取り出す方法
現在、PHP4とMysql4.1の環境を利用しています。 カラムからのデータ抽出で、うまくいきません。 例えば、カラムに次のような形でデータがあった場合、それをカンマで区切って別々に抽出し、かつ重複を除いてブラウザに表示させるにはどのような方法があるでしょうか。 +-------------+ | A,B,C,A,B,C | +-------------+ 上記配列をDBからmysql_fetch_arrayで取得し、 その後splitして、printしましたが、 ブラウザ上では「array」と表示されてしまいました。 何か方法がありましたら、 ご教授いただければ幸いです。
- ベストアンサー
- PHP
- LOAD DATA INFILE の使用について
サーバにある、CSVファイルをデータベース(mysql)に登録したいです。 $query = "LOAD DATA INFILE '[ファイル名]' INTO TABLE [テーブル名] FIELDS TERMINATED BY ','"; を $result = mysql_query($query); として実行すると、 Access denied for user 'user'@'%' (using password: YES) というエラーになります。 色々検索すると、ユーザーはrootユーザーでないといけない・・・というのを見かけたのですが・・・ 普通のユーザーではLOAD DATA INFILEを使用できませんか? 私は、レンタルサーバを使用していて、レンタルサーバ上からしかユーザーを追加できません。 この場合、LOAD DATA INFILE~ は使用できないのでしょうか? また、もし使用できない場合、代替手段はあるのでしょうか?
- ベストアンサー
- PHP
お礼
動きましたー(T.T)!!! (1) はgooに投稿した時の私の打ちミスでした。失礼しました(汗)。 (2) と (3) が主な原因のようです。ご指摘有り難うございました。 MySQL初心者の上に、仕事では Win で正規表現を時たま使うので、Macとの表記の違いがあることに気付きませんでした。勉強になりました。orz