hinataka
@hinataka

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

CSVファイルからインポートしてSQLを実行したい

解決したいこと

MySQLでLOAD DATA LOCAL INFILEを使ってCSVからインポート、テーブルへの追加をしたいのですが、コマンドプロンプトでSQLファイルを実行すると下記のエラーが出て実行できません。
解決方法をぜひ教えてください。

発生している問題・エラー

ERROR 2 (HY000): File '‪‪C:\ProgramData\MySQL\MySQL Server 8.0\Uploads\sample_2.csv' not found (OS errno 2 - No such file or directory)

該当するソースコード

SQL
LOAD DATA LOCAL INFILE '‪‪C:/ProgramData/MySQL/MySQL Server 8.0/Uploads/sample_2.csv'
INTO TABLE m_person
FIELDS TERMINATED BY ',' 
LINES TERMINATED BY '\n';

自分で試したこと

・SQLのLOAD DATA LOCAL INFILEのあとのパス指定を\→/に変更
・コマンドプロンプトでSELECT @@local_infile;でlocal_infile=1であることを確認
・コマンドプロンプトでIs ‪‪C:/ProgramData/MySQL/MySQL Server 8.0/Uploads/sample_2.csvを入力したが、エンター押しても改行するだけで実行できない

0

3Answer

- '‪‪C:/ProgramData/MySQL/MySQL Server 8.0/Uploads/sample_2.csv'
+ 'C:\\ProgramData\\MySQL\\MySQL Server 8.0\\Uploads\\sample_2.csv'

これで通ると思います。

1Like

Comments

  1. @hinataka

    Questioner

    SQL文をLOAD DATA LOCAL INFILE 'C:\SQL\sample_2.csv'としてファイル配置したら成功しました。
    しかし、なぜSQLフォルダだと成功するのか調べても分かりません。
    重ねての質問になりますが、アドバイス頂けると幸いです。

  2. 元々はどこだったのでしょう?

  3. @hinataka

    Questioner

    元々は
    C:\ProgramData\MySQL\MySQL Server 8.0\Uploads\sample_2.csv
    でした

  4. すみません。同じことを聞くようで申し訳ないのですが、

    SQL文をLOAD DATA LOCAL INFILE 'C:\SQL\sample_2.csv'としてファイル配置したら成功しました。

    • csvファイルの場所を変えてSQLを変更した、ということでしょうか
    • それともSQLを記載したファイルの場所を変えた、ということでしょうか
    • SQLを実行するユーザはC:\ProgramData\MySQL\MySQL Server 8.0\Uploads\へのアクセス権がありましたか?
  5. @hinataka

    Questioner

    すみません、書き方が悪かったですね
    csvファイルの場所を変えてSQLを変更した、ということです
    アクセス権について、実行するユーザの名前がどこで確認できるのかも分からず確認できていません。

    すみません、どこにCSVファイルを置いても処理が成功するようになったのですが、PC再起動などごちゃごちゃしているうちにどこが悪かったか分からなくなってしまいました。
    モヤモヤしてしまうかもしれず申し訳ないのですが、解決したものとして質問を終了しようと思います。

OSはなんでしょう
ファイルがないと出ているようなので、パスやファイル名が違っているのではないかと思います。
Windows11であれば、ファイルの右クリックに"パスのコピー"して貼り付けるのが間違いなさそうです。
Macであれば、ファイルを選択した状態で、Control キーを押しながらクリックし、「選択した項目のパス名をコピー」でパスをコピーできるようです。

0Like

Comments

  1. @hinataka

    Questioner

    Windowsです
    SQL文中のパス指定には、CSVファイルのプロパティからコピペしているので、間違いないです

  2. 他のフォルダではいかがでしょうか
    権限的に、そのファイルにアクセスできない、ということはありませんか?

ERROR 2 (HY000): File '‪‪C:\ProgramData\MySQL\MySQL Server 8.0\Uploads\sample_2.csv' not found (OS errno 2 - No such file or director

エラーメッセージはファイルが見つからないと言っているのですから、まずはあなたの方でファイルの有無を調べてみてはいかがですか?

Windows OS の PC に MySQL 8.0.x をストールしたのだと想像してますが、だとすると ‪‪C:\ProgramData\MySQL\MySQL Server 8.0\Uploads というフォルダは存在するはずです。

Windows OS 付属の explorer を起動して ‪‪C:\ProgramData\MySQL\MySQL Server 8.0\Uploads を下の画面の赤枠に入力してみてください。そのフォルダに sample_2.csv はありますか?

explorer.jpg

0Like

Comments

  1. @hinataka

    Questioner

    スクリーンショット (15).png
    C:\ProgramData\MySQL\MySQL Server 8.0\Uploads\sample_2.csvは確かに配置しています。
    SQLのパス指定にはCSVファイルのプロパティからコピペしているので、間違いないです

  2. 自分の Windows 10 PC の explorer ではどうやってもそういう表示には絶対ならないのですか・・・

Your answer might help someone💌