2009-04-17 5 views
2

examiner le texte suivant de la PostgreSQL documentation sur la copie binaire:Essayer de comprendre format binaire copie de Postgres en C#

séquence de 11 octets PGCOPY \ n \ 377 \ r \ n \ 0 - note que l'octet nul est une partie requise de la signature. (La signature est conçue pour permettre facilement identification des fichiers qui ont été déteriorés par un transfert propre non 8 bits. Cette signature sera modifiée par filtres de fin de ligne de traduction, suppression des octets zéro , a chuté bits de poids forts ou des changements de parité.)

Je peux créer le reste de l'en-tête ok, mais ce qu'on entend par \ 377? Je pensais que la plus grande valeur que vous pourriez avoir dans un seul octet était de 256?

En outre, dans l'exemple:

0000000 P G C O P Y \n 377 \r \n \0 \0 \0 \0 \0 \0 
0000020 \0 \0 \0 \0 003 \0 \0 \0 002 A F \0 \0 \0 013 A 
0000040 F G H A N I S T A N 377 377 377 377 \0 003 
0000060 \0 \0 \0 002 A L \0 \0 \0 007 A L B A N I 
0000100 A 377 377 377 377 \0 003 \0 \0 \0 002 D Z \0 \0 \0 
0000120 007 A L G E R I A 377 377 377 377 \0 003 \0 \0 
0000140 \0 002 Z M \0 \0 \0 006 Z A M B I A 377 377 
0000160 377 377 \0 003 \0 \0 \0 002 Z W \0 \0 \0 \b Z I 
0000200 M B A B W E 377 377 377 377 377 377 

Qu'est-ce que ces mêmes 377 valeurs représentent, comme j'interprête le format, ils ne devraient pas être qu'ils \ 0 de?

Si quelqu'un pourrait aider avec le reste du format, il serait apprécié. Je pourrait tricher et utiliser la copie de la base de données CVS, mais avec le nombre de lignes dont j'ai besoin de copier (dans les millions) Je comprends que le format binaire aurait de nombreux avantages en vitesse sur le CVS un.

+1

"mais avec le nombre de lignes que j'ai besoin de copier (dans les millions) je comprends que le format binaire aurait de nombreux avantages en termes de rapidité par rapport au CVS." Si vous avez besoin de le refaire, c'est sûr. Mais si vous avez seulement besoin de le faire une fois, il sera probablement plus rapide d'exécuter le vidage plus lent que de passer votre temps à mettre en œuvre le format le plus rapide. – kquinn

Répondre

4

Le \377 est octal - sa valeur décimale est 255. Y avait-il quelque chose d'autre sur le format qui a été spécifiquement vous source de confusion?

+0

qui répond beaucoup, surtout pour expliquer pourquoi, par exemple « 013 » était la longueur de la valeur, mais était en fait inférieur à celui de la longueur. Cela a beaucoup plus de sens. Merci. – Ash

1

Fondamentalement, vous ne recevrez pas significative en utilisant speedup le format binaire. Il a différents avantages, mais le chargement des données plus rapidement n'est pas vraiment l'un d'entre eux.

Il suffit d'utiliser la commande standard csv et COPY et vous devriez être bien.

Questions connexes