アプリ版:「スタンプのみでお礼する」機能のリリースについて

お世話になっております。

store_table 内にある 特定のkaiin_no ('123456','234567')  で抽出して
デスクトップにsample.csvとして保存したいと思い
下記SQLをphpMyadmin で走らせたのですが文法エラーになります。

SELECT * FROM store_table WHERE kaiin_no IN ('123456','234567') into outfile 'c:/Users/pc/Desktop/sample.csv' fields terminated by ',' enclosed by '"' escaped by '"' lines terminated by '\r\n';

SQLの記載方法についてご教示頂けないでしょうか?
宜しくお願い致します。<(_ _)>

A 回答 (5件)

>大事な情報が欠けていました。

PostgreSQL8.8.4を利用しています。

おっと。
PostgreSQLなら、select into outfileが使えないですね。

でもPostgreSQLにバージョン8.8.4は存在しないような。
    • good
    • 0
この回答へのお礼

ご教示ありがとうございます。
情報が間違えておりました。申し訳ありません。
PostgreSQL 8.4.8
phpPgAdmin 3.5.3
でございます。

PostgreSQLなら、select into outfileが使えないとの事
色々調べたところ下記サイトを参照したところ
https://www.postgresqltutorial.com/export-postgr …

COPY (SELECT * FROM store_table WHERE kaiin_no IN ('123456','234567') ) TO 'C:\tmp\persons_partial_db.csv' DELIMITER ',' CSV HEADER;

で文法エラーが出ました。

そこでシンプルにWHERE kaiin_no IN ('123456','234567') を削除してテストしたら

ERROR: must be superuser to COPY to or from a file
HINT: Anyone can COPY to stdout or from stdin. psql's \copy command also works for anyone.

となりました。

スーパーバイザー権限の付与が必要との事。
付与の仕方はどうすればよいでしょう?

<(_ _)>

お礼日時:2021/07/14 09:43

debian 10にmysql 8.0.25を導入して、下記CSV出力を試したら、問題なく実行されました。



SELECT * FROM user WHERE user IN ('root','mysql') into outfile '/var/lib/mysql-files/sample.csv' fields terminated by ',' enclosed by '"' escaped by '"' lines terminated by '\r\n';

文法エラーになるんだったら、へんな文字(全角空白とか)が混入してるのでは。
「SQLで抽出してCSVで書き出したいです」の回答画像4
    • good
    • 0

>LINE 1: ... store_table WHERE kaiin_no ('123456'


「IN」が無いからでは。質問文にあるので補足時の誤りかも。
    • good
    • 0
この回答へのお礼

ご教示ありがとうございます。
INを入れてもダメでした。

ERROR: syntax error at or near "into"
LINE 1: ...ore_table WHERE kaiin_no in ('123456','234567') into OUTFI...
^
大事な情報が欠けていました。
PostgreSQL8.8.4を利用しています。

<(_ _)>

お礼日時:2021/07/09 09:53

ファイルでの出力権限が足りないのでは。

文法誤りでなく。

エラーメッセージを補足したら、回答を得られるかも。
    • good
    • 0
この回答へのお礼

ご教示ありがとうございます。

エラー内容が 下記でして
ERROR: syntax error at or near "INTO"
LINE 1: ... store_table WHERE kaiin_no ('123456'。。。

でkaiin_noにチェックがありました。

Can't create/write to file ',,,, ではなかったのです。

<(_ _)>

お礼日時:2021/07/08 23:22

ど素人です。



気になったのはそのフィールドのデータ形式は数値ではなく文字列なのでしょうか?
⇒先頭に 0 を付けたい時に文字列にする事もありますからそうなっている可能性も考えましたけど。
    • good
    • 0
この回答へのお礼

ご返信ありがとうございます。
特定のIDを検索して、その結果をCSVで書き出すことを考えています。
以下で抽出はできたのですが、CSV書き出しが出来ない状態です。
SELECT * FROM store_table WHERE kaiin_no IN ('123456','234567') ;

なので、該当するレコードの抽出となりますので数値と文字列が混ざっています。<(_ _)>

お礼日時:2021/07/08 16:14

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!