import io
import csv
import datetime
import psycopg2
import glob
conn = psycopg2.connect("host= 127.0.0.1 dbname=postgres user=postgres password=123 client_encoding='utf8' ")
f = io.StringIO()
w = csv.writer(f)
f.seek(0)
cursor = conn.cursor()
cursor.copy_expert(f""" COPY ama3 FROM 'C:/abc/asd.csv' (FORMAT CSV)""", f)
conn.commit()
ERROR: CharacterNotInRepertoire: ERROR: Invalid byte sequence for language encoding "UTF8":
The csv file contains letters containing "ş,i,ö,Ğ,İ". I think the error is caused by this, but I don't want to change them.
CodePudding user response:
You are not adding the data from ptyhon, you are adding it directly from the filesystem using PostgreSQL's copy command. Make sure your csv file is UTF-8 encoded.
While in linux/mac you can easily do a:
$ file /abc/asd.csv
In Windows is not that straightforward (I am assuming you are using Windows).
In windows, you could:
Open up your file using regular old vanilla Notepad that comes with Windows. It will show you the encoding of the file when you click Save As....
If it's not in UTF-8, convert it and try running your script again.

