-1

このpythonコマンドを使用してmysqlデータベースを.csvファイルにエクスポートしたいと思います。

cursor.execute("""SELECT * INTO OUTFILE 'NullServids.csv' FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' ESCAPED BY '\\' LINES TERMINATED BY '\\n' FROM accounts WHERE srvid is NULL""")

ただし、次の構文エラーが返されます。

_mysql_exceptions.ProgrammingError: (1064, "You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '\\n' FROM accounts WHERE srvid is NULL' at line 1")

そこで、改行文字をエスケープしないようにしました。これは、MySQLにコピーして貼り付けると明らかに機能します。

cursor.execute("""SELECT * INTO OUTFILE 'NullServids.csv' FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' ESCAPED BY '\\' LINES TERMINATED BY '\n' FROM accounts WHERE srvid is NULL""")

しかし、私はこのエラーを受け取りました:

_mysql_exceptions.ProgrammingError: (1064, "You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' FROM accounts WHERE srvid is NULL' at line 2")

だから私の質問は、cursor.execute()呼び出しで正しく解釈されるように改行文字をエスケープする適切な方法は何ですか?私はこれをグーグルで検索しましたが、答えを見つけることができませんでした。

4

1 に答える 1

0

バックスラッシュが文字列でエスケープされることを忘れているため、\は何の意味もありません。使用している文字列を印刷しようとすると、円記号のある場所が空であることがわかります。

代わりにこれを試してください:

"""SELECT * INTO OUTFILE 'NullServids.csv' FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' ESCAPED BY '\\\\' LINES TERMINATED BY '\\n' FROM accounts WHERE srvid is NULL"""
于 2012-08-14T01:34:28.233 に答える