2011-01-21 10 views
0

私は適切なコンマ分離してCSVテーブルにMySQLのテーブルを記述しようとしています。それはフォーマットせずに動作し、結果はタブで区切られたファイルです。しかし私は、カンマ区切りのファイルを必要と私は構文エラーを取得しています。コードは次のとおりです。出力MySQLのテーブル:構文エラー

def export_csv(cxn, filename,filestamp,table, cols='*', where='1'): 
    cur = cxn.cursor() 
    cur.execute("select %s \ 
    into outfile '/tmp/%s-%s.csv' \ 
    fields terminated by ',' optionally enclosed by '\"' \ 
    escaped by '\\' \ 
    lines terminated by '\n' 
    from %s \ 
    where %s " \ 
    % (cols, table, where, filename, filestamp)) 
    cur.close() 

純粋なMySQLで動作します。私はエスケープを追加しようとしましたが、役に立たなかった。

+1

。。。。。 –

答えて

2
  • 使用する]を選択 文の周りこの場合 には、複数行にまたがる 文字列の周りにトリプルクォート'''

EDIT(それ以上はあります...)

  • バックスラッシュでエスケープし、MySQLへのバックスラッシュを渡すには、三重引用符で囲まれた文字列
  • 内の行の最後にバックスラッシュを追加しないでください\\ 、または文字列を始める前にrを追加すると、生の文字列にマークを付けることができます。
+0

これは当てはまりますが、バグの1つのみを解決します。 –

+0

正しい答えを更新しました –

+0

def export_csv(cxn、filename、filestamp、table、cols = '*'、where = '1'): cur = cxn.cursorcur.execute( "" "select %sが終了OUTFILE '/tmp/%s-%s.csv' フィールド '' 任意に囲まれた '"' は、 '\ n' は%Sから%sの によって終端 '\' 線でエスケープ」に"" %(COLS、ファイル名、filestamp、テーブル、どこ)) cur.close() おかげで、これはcsvモジュールで結果をスクラブから私を救いました。 – slooow