2017-08-21 15 views
1

を使用してデータベースにCSVファイルからデータを追加:次のように私は、Djangoのモデルを持っているジャンゴ

class TraxioRelations(models.Model): 
    corgemeente = models.CharField(max_length=100, null=True) 
    coradres = models.CharField(max_length=255, null=True) 
    corhuisnr = models.CharField(max_length=10, null=True, blank=True) 

を次のようにモデルがidで、データベース内のテーブルを作成すること: enter image description here

今、私は追加したいですcsvファイルからそのモデルへの記録。次のようにcsvファイルは次のとおりです。

enter image description here

次のように私はcopy次のコマンドを使用します。

COPY master_traxiorelations(corgemeente, coradres, corhuisnr) 
FROM '/path/to/file.csv' CSV HEADER delimiter ';' encoding 'ISO-8859-1'; 

とするとき、私はそれを実行し、次のように、私はエラーを取得する:

[2017-08-21 15:50:49] [22P04] ERROR: extra data after last expected column 

しかし、idcopyコマンドに追加すると、COPY master_traxiorelations(id, corgemeente, coradres, corhuisnr)

csvファイルへ:

enter image description here

そして、それが正常に動作します。

idをコピーコマンドとcsvファイルに追加せずに、ファイルからデータベースにデータを追加するにはどうすればよいですか?

+0

この目的のためにdjango import export.Docsというリンクを使用することをお勧めします。https://django-import-export.readthedocs.io –

答えて

0

Iは次のようにモデルにidを添加解決:

id = models.AutoField(primary_key=True) 

id = models.AutoField(primary_key=True)は、IDの自動インクリメントを可能にする追加します。したがって、私のモデルは次のようになります。

class TraxioRelations(models.Model): 
    id = models.AutoField(primary_key=True) 
    corgemeente = models.CharField(max_length=100, null=True) 
    coradres = models.CharField(max_length=255, null=True) 
    corhuisnr = models.CharField(max_length=10, null=True, blank=True) 

そしてcopyコマンドは、csvファイルのidカラムを追加することなく動作します。

COPY master_traxiorelations(corgemeente, coradres, corhuisnr) 
FROM '/path/to/file.csv' CSV HEADER delimiter ';' encoding 'ISO-8859-1'; 

誰か他の人が同じ問題を抱えている場合に役立ちます。

関連する問題