DjangoプロジェクトのMySQLデータベースにインポートしようとしている大きな.csvがあります。私は、行の.CSVをgrepをした後大きなcsvをMySQLに挿入し、不明な文字の行を無視する
django.db.utils.OperationalError: (1300, "Hey! Are you out tonight?")
:しかし、私は次のエラーを取得しておく
LOAD DATA LOCAL INFILE 'file.csv'...
:私のような生のSQL文を書くためにdjango.dbライブラリを使用していますエラーがこの文字によって引き起こされていることを認識しました。私はこれを修正した後、他の文字がそのエラーを投げることになるでしょう。
実行中:端末から
$ file --mime file.csv
は、返されます。私のデシベルの残りの部分はUTF-8である
$ file.csv: text/html; charset=us-ascii
ので、私はそれを再エンコードするPythonスクリプトを書いてみました、 「無視する」ことを期待し.encode('utf-8', 'ignore')
を使用するとのトラブルを与えたが、それは投げた任意のシンボルを削除します:
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xe9 in position 825410: invalid continuation byte
事は、私は実際に私のDBにファイルの100%を挿入する気にしないです。私はちょうど奇妙な文字を含んでいない '安全な'行だけを挿入するだけです。
LOAD DATA LOCAL INFILE
SQLステートメントを変更する方法を探していますので、問題を引き起こす行を挿入するのをスキップするだけです。私はデータの前処理に時間を費やしたくないので、これは最適です。
これが実現できない場合は、dbを更新するたびに後で私のdjangoアプリケーションから実行できるPythonスクリプトを使用して、面倒な文字や行を削除することをお勧めします。
それ以外の場合は、UTF-8ではない文字をgrepする方法についての情報が役立ちます。
csvビルトインライブラリ - https://docs.python.org/3/library/csv.htmlを試しましたか? – chachan
csv組み込みライブラリがどのように役立つかを詳しく説明できますか?それは、文字セットを指定するか、データを消去するメソッドを持っていますか? – Sam
答えとして追加 – chachan