2017-10-12 11 views
0

Je sais que je peux faire un simple fichier CSV en mémoire comme ceci:Comment créer un fichier TSV en mémoire avec des valeurs nulles, en utilisant cStringIO?

from cStringIO import StringIO 
tsv_string = '1\t2\t3\n' 
f = StringIO(tsv_string) 

Mais comment puis-je adapter cette option pour inclure null/None valeurs? Je demande parce que je génère mon tsv_string dynamiquement en utilisant des données réelles. Certains des champs entiers sont null et je ne peux pas les remplacer par une chaîne vide car Postgres ne peut pas interpréter cela correctement.

Pour donner encore plus de fond, je fais ce que je puisse utiliser psycopg2 fonction de copy_from qui me donne actuellement cette erreur pour la raison ci-dessus:

psycopg2.DataError: invalid input syntax for integer: "" 

La question est, comment dois-je placer des valeurs nulles dans mon fichier TSV en mémoire. Existe-t-il une extension de fichier plus appropriée à utiliser?

Répondre

0

J'ai trouvé ma réponse de cette question.

je devais préciser l'argument null comme une chaîne vide:

cursor.copy_from(f, 'my_table', columns=columns, null='')