• 締切済み

存在しているファイルがロードできない?

MySQLを試行錯誤しながら、Windows2003上にインストールし、文字化けも解消、WindowsXP上からリモートでログインして操作できる状態になりました。 コマンドラインからデータベースを作成し、基幹システム上のデータをテキストファイルにCSVで落とした後、作成したTABLEに >load data infile "c:\\mysql\\sql\\test.txt" >into table cshmst fields terminated by ',' >optionally enclosed by '"'; を実行したのですが、 ERROR1105(HY005):File 'c:\mysql\sql\test.txt' not Found(Errcode: 2) とエラーが出てしまいます。当然指定パスにファイルは存在します。 別のマシンからダウンロードした同一形式のCSVは同じパラメタで正常にロードできたので、文字コードの問題か何かのように思えます。 エディタで開いてみると、正常に開き、文字化けもしていない状態なのですが、不思議です。(OKなほうもNGのほうも同じ) 同じような経験をされた方がありましたら、アドバイスいただけたら幸いです。 MYSQL:4.1.14 Windows版 Server:Windows2003 SP2 Cliant:WindowsXP Pro my.iniの変更 [mysqld] default-character-set=sjis default-table-type=InnoDB language=japanese  → コメントアウト

  • MySQL
  • 回答数4
  • ありがとう数5

みんなの回答

  • hrm_mmm
  • ベストアンサー率63% (292/459)
回答No.4

sqlディレクトリー上ってことはサーバー側のCドライブにファイルがあるんですよね。 データベースディレクトリかそれより下位でないとアクセスできなかったような? my.iniのデータベースディレクトリはどこになってますか? http://dev.mysql.com/doc/refman/4.1/ja/load-data.html MySQL バージョン 3.22.6 以降なら、クライアント側に置いてLOCAL指定した方がはやいかも。

hatsuzo
質問者

お礼

有難うございました。 解決しました。localオプションが無いとサーバー上のファイルとみなされてしまうようです。 ただ、以前に実行した時はlocalオプションの存在を知らなかったので、それでも1つのテーブルへロードできたのが不思議なんですが。勘違いでしょうか。

  • moon_night
  • ベストアンサー率32% (598/1831)
回答No.3

前にやったことがありますが、SJISだと文字化けすることがありました。 ただ、Loadできないと言うことはなかったので、文字コードのせいではないような気がしますが。 とりあえず日本語は使わないで、英数字だけでLoad data してみたらどうなるのでしょうか。 正常にLoadできるようでしたら、日本語のせいだとおもいます。 あとはエラー番号を調べてみると、以下のようなものが出てきたので参考にしてください。 http://dev.mysql.com/doc/refman/4.1/ja/news-4-0-14.html http://dev.mysql.com/doc/refman/4.1/ja/problems-with-character-sets.html http://d.hatena.ne.jp/babie/20050810

hatsuzo
質問者

お礼

有難うございました。 解決しました。localオプションが無いとサーバー上のファイルとみなされてしまうようです。

  • agharta
  • ベストアンサー率52% (54/103)
回答No.2

-Lオプションつけても駄目ですか?

hatsuzo
質問者

お礼

有難うございました。 解決しました。localオプションが無いとサーバー上のファイルとみなされてしまうようです。

  • agharta
  • ベストアンサー率52% (54/103)
回答No.1

Windows環境は使ったこと無いので、なんともいえませんが、 mysqlimportコマンドだとどうなるでしょうか。

hatsuzo
質問者

お礼

アドバイス有難うございました。 mysqlimportでも行ってみましたが、同じ結果になりました。 mysqlimport : Error : File 'c:\mysql\sql\mytbl.txt' not found(Errcode: 2) when using table mytbl とほぼ同じエラーが出るようです。

関連するQ&A

  • PHPで表示したテーブル内容をCSV出力したい(PHPとMySQL別サーバ)

    はじめまして。 PHPで別サーバにあるMySQLのテーブル内容を表示しています。 表示されたテーブル内容をPHPからCSV出力したいのですが、どうすればよいのでしょうか? 下記のように、MySQLのあるサーバに接続して $host = "10.160.XX.XXX"; mysql_connect($host, "test_user", "test_passwd") 下記のようにエクスポートしてみましたがダメでした。 $sql = "select * into outfile '/home/test/test.txt' fields optionally enclosed by '~' terminated by ',' from test"; $res = mysql_query($sql,$conn); やりたいことは、ユーザがPHPの画面上からMySQLのさまざまなテーブル内容を選択表示した際に ユーザの任意で("CSV出力"という文字をクリック)、表示されたテーブル内容をCSV出力したい。 サーバはPHP、MySQLともにLinuxです。 PHPのバージョンは5.1.4 MySQLのバージョンは4.1.20です。 宜しくお願い致します。

    • 締切済み
    • PHP
  • BAT処理でCSVデータのインポート

    よろしくお願いしますm(__)m 昨日から調べて作ってみたのですがうまく動かず、 MYSQLが強制終了してしまうこともありました(T_T) 疲れました・・・ ※test.batに以下の内容を書きました c:\mysql\bin\mysql -u **** -p**** < test.sql ※test.sqlに以下の内容を書きました LOAD DATA INFILE "c:\mysql\test.csv" INTO TABLE 商品管理.商品単品 FIELDS TERMINATED BY "," OPTIONALLY ENCLOSED BY "" ESCAPED BY "\\" LINES STARTING BY "" TERMINATED BY "\n" ※test.csvはカンマ区切りになっています。 ファイルは【test.bat】【test.sql】【test.csv】とも c:\mysqlに置いています。 この状態でtest.batを実行するとDOS窓が一瞬現れて消えて しまいます。 間違っているところやヒントなどあれば教えてくださいm(__)m

    • ベストアンサー
    • 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
  • 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
  • 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 '"';

  • csvからmySQLのデータベース作成

    カンマ区切りのcsvファイルを読み込んでMySQLのデータベースを作成したくて、下記のプログラムを作成しました。 しかし、正常に動作しません。どこに問題があるのでしょうか。 よろしくお願いします。 <?php $file = '"test.txt"'; //------------------------------------------------------------- //データベースアクセス //------------------------------------------------------------- $url = 'test-test.com'; // MySQL hostname $user = 'test_user'; // Your MySQL user name. $pass = 'password'; // Your MySQL password. $db = 'test_db'; // MySQLへ接続する $link = mysql_connect($url,$user,$pass); if ( $link == FALSE ) { error(__line__); } // データベースを選択する $sdb = mysql_select_db($db,$link); if ( $sdb == FALSE ) { error(__line__); } mysql_query("SET NAMES utf8"); //CSVデータの取り込み $sql = "LOAD DATA LOCAL INFILE '$file' INTO TABLE test fields terminated by"; $sql .= " LINES "; $sql .= " TERMINATED BY '\r\n' "; $sql .= " IGNORE 1 LINES"; $result = mysql_query($sql, $conn); if (!$result) { $message = 'Invalid query: ' . mysql_error() . "\n"; $message .= 'Whole query: ' . $sql; die($message); } //------------------------------------------------------------- // エラーメッセージ表示 //------------------------------------------------------------- function error($line) { echo "error code:" . $line; exit; } ?> ---------- .CSVファイル ---------- 日付,内容,備考 0901,value,etc 0902,value2,etc2

    • ベストアンサー
    • PHP
  • mysqlのloadコマンドに引数をセットするバッチの作成

    mysqlのloadコマンドに引数をセットするバッチの作成 データ移行でロードするファイルが数多くあり バッチ処理(param.bat)で実行できるようにしたいのですが、 SQLスクリプト(param.sql)にうまく引数を渡すことができません。 引数1にデータ:aaa.txt 引数2にテーブル:test_tbl どうかアドバイスいただけないでしょうか。 宜しくお願いいたします。 OS:Windows XP 【実行時】 c:temp>param.bat aaa.txt test_tbl 【作成したファイルの記述】 param.bat ------- mysql test1 -u user1 -puser1 < param.sql %1 %2 param.sql ------- LOAD DATA INFILE '&1' INTO TABLE &2 FIELDS TERMINATED BY ',' ESCAPED BY '\\' LINES TERMINATED BY '\r\n'; exit;

  • PHPでCSVファイルをUTF8に変換したい

    ブラウザからCSVファイルをアップロードし、MySQLのデータベースにインポートするプログラムをPHPで作成しています。 エクセルで作成したCSVファイルはsjis形式のため、UTF8に変換してからMySQLにインポートしてあげると文字化けせずにインポートする事が出来るのですが、毎回手動でUTF8に変換するのは面倒ですのでファイルをアップロードしたタイミングで自動的にsjis形式からUTF8に変換したいと考えております。 ファイルのアップロードまでは動作していますが、CSVファイルをsjisからUTF-8に変換するにはどうすればよいでしょうか? どなたかご教示いただければ幸いです。以下は作成中のコードです。 index.html <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> <title>sample</title> </head> <body> <form action="read.php" method="POST" enctype="multipart/form-data"> ファイル:<br> <input type="file" name="upfile" size="30"><br> <br> <input type="submit" value="アップロード"> </form> </body> </html> read.php <?php //csvファイルのアップロード if (is_uploaded_file($_FILES["upfile"]["tmp_name"])) {     //「files」という名前のフォルダを同じ階層に設置。ここにCSVファイルをアップロード if (move_uploaded_file($_FILES["upfile"]["tmp_name"], "files/" . $_FILES["upfile"]["name"])) { chmod("files/" . $_FILES["upfile"]["name"], 0644); //fileパス $file = "files/" .$_FILES["upfile"]["name"]; //DB接続 $sv = "localhost"; $dbname = "shop"; $user = "user"; $pass = "password"; $conn = mysql_connect($sv, $user, $pass) or die("コネクトエラー"); mysql_select_db($dbname) or die("DBセレクトエラー"); mysql_query("SET NAMES utf8"); //CSVデータの取り込み $sql = "LOAD DATA LOCAL INFILE '$file' INTO TABLE food"; $sql .= " FIELDS"; $sql .= " TERMINATED BY ',' "; //TERMINATED BY 区切り文字 $sql .= " ENCLOSED BY '\"' "; //ENCLOSED BY 囲み文字 $sql .= " LINES TERMINATED BY '\r\n' "; $sql .= " IGNORE 1 LINES"; $result = mysql_query($sql, $conn); if (!$result) { $message = 'Invalid query: ' . mysql_error() . "\n"; $message .= 'Whole query: ' . $sql; die($message); } echo "インポートが完了しました!"; //失敗したとき } else { echo "ファイルをアップロードできません。"; } } else { echo "ファイルが選択されていません。"; } ?> CSVファイル "No","food","price" "1","うどん","100" "2","カレー","300" "3","パスタ","500" MySQLテーブル CREATE TABLE IF NOT EXISTS `food` ( `No` int(11) NOT NULL, `food` varchar(50) NOT NULL, `price` int(11) NOT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8; 使用中のバージョン PHP/5.4.19 Apache/2.4.4 XAMPP v3.2.1 素人の質問で凝縮ですが、よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • windows bat ftpモード切替

    以下を実行すると、ftp -s:C:\update.txt でエラーになってしまいます。 SET PATH="C:\Program Files\MySQL\MySQL Server 5.0\bin" の部分をコメントすると、 ftp -s:C:\update.txt は正常に動作します。 どうしたら、解決しますか? <windows bat > ECHO ON REM MySQL PATH SET PATH="C:\Program Files\MySQL\MySQL Server 5.0\bin" REM CHARACTER set ECHO SET character SET sjis;>create_sql.sql %PATH%\mysql.exe -u root -proot test<create_sql.sql ftp -s:C:\update.txt <update.txt > open 接続先 ユーザID パスワード hash ascii put master.csv bye

  • mysqldumpでリストアし一部外字が文字化け

    mysqldump  –default-character-set=utf8 でバックアップしてたsqlファイルを mysql –default-character-set=utf8 でインポートしWEBを開いてみたら 一部の外字が文字化けしてしまいました。 nkfでバックアップのsqlファイルの文字コード調べてみると、EUCJP-winとなっていました。 既に元のDBはサーバークラッシュの為無い状態です。 どなたかご教授お願い申し上げます。 <元DBの環境> OS:Windows2003Server DB:MySQL5.0 PHP:5.0 <リストアするDBの環境> OS:windowsXP DB:MySQL5.0 PHP:5.2