web-dev-qa-db-fra.com

Comment visualiser directement les blobs dans MySQL Workbench

J'utilise MySQL Workbench CE 5.2.30 CE/Rev 6790. Lorsque vous exécutez l'instruction suivante:

SELECT OLD_PASSWORD("test")

Je ne récupère qu'une icône Nice BLOB. Je dois cliquer avec le bouton gauche de la souris pour sélectionner la cellule, cliquer avec le bouton droit de la souris et choisir "Ouvrir une valeur dans l'afficheur", puis sélectionner l'onglet "Texte".

En utilisant la même chose avec phpMyAdmin, je récupère directement la valeur du OLD_PASSWORD appel. Ce n'est qu'un exemple, mais existe-t-il un moyen de voir directement de tels résultats dans la sortie?

60
mark

En bref:

  1. Allez à Edit> Préférences
  2. Choisissez Éditeur SQL
  3. Sous Exécution SQL, cochez Traiter BINARY/VARBINARY comme une chaîne de caractères non binaire
  4. Redémarrez MySQL Workbench (vous ne serez ni invité ni informé de cette exigence).

Dans MySQL Workbench 6.0 +

  1. Allez à Edit> Préférences
  2. Choisissez Requêtes SQL
  3. Sous Résultats de la requête, cochez Traiter BINAIRE/VARBINAIRE comme une chaîne de caractères non binaire
  4. Il n'est pas obligatoire de redémarrer MySQL Workbench (vous ne serez ni invité ni informé de cette exigence). *

Avec ce paramètre, vous pourrez concaténer des champs sans générer de gouttes.

Je pense que cela s’applique aux versions 5.2.22 et supérieures et est le résultat de ce bogue MySQL .

Avertissement: je ne connais pas les inconvénients de ce paramètre - peut-être que lorsque vous sélectionnez les valeurs BINARY/VARBINARY, vous le verrez sous forme de texte brut pouvant être trompeur et/ou peut-être va nuire aux performances si elles sont assez grandes?

99
spioter

Effectuez trois étapes:

  1. Allez dans "Préférences WorkBench" -> Choisissez "Editeur SQL" Sous "Résultats de la requête": cochez "Traiter BINARY/VARBINARY comme une chaîne de caractères non binaire"

  2. Redémarrez MySQL WorkBench.

  3. Maintenant, sélectionnez SELECT SUBSTRING(BLOB<COLUMN_NAME>,1,2500) FROM <Table_name>;

25
NKP

Je ne sais pas si cela répond à la question, mais si vous cliquez avec le bouton droit de la souris sur l'icône "blob" dans le champ (lors de l'affichage du tableau), l'option "Ouvrir une valeur dans l'éditeur" est disponible. L'un des onglets vous permet de visualiser le blob. Ceci est en ver. 5.2.34

22
Dan Sherman

le casting fonctionne, mais c’est pénible, je vous recommande donc d’utiliser la méthode de Spioter à moins que vous n’utilisiez beaucoup de données véritablement blob.

SELECT CAST(OLD_PASSWORD("test") AS CHAR)

Vous pouvez également utiliser d'autres types, et même en limiter la taille, mais la plupart du temps, j'utilise simplement CHAR: http://dev.mysql.com/doc/refman/5.5/en/cast-functions. html # function_cast

13
CSTobey

Je crains que cela ne semble pas possible. Il est répertorié comme un bogue dans Workbench: http://bugs.mysql.com/bug.php?id=50692 Ce serait très utile si !

5
dmag

avait le même problème, selon la documentation MySQL , vous pouvez sélectionner une sous-chaîne d'un BLOB:

SELECT id, SUBSTRING(comment,1,2000) FROM t

HTH, glissi

4
glissi

Établi 6.3
Suivez la réponse avec les meilleurs scores puis utilisez UNCOMPRESS()

(En bref:
1. Allez dans Edition> Préférences
2. Choisissez l'éditeur SQL
3. Sous Exécution SQL, cochez Traiter BINARY/VARBINARY comme une chaîne de caractères non binaire.
4. Redémarrez MySQL Workbench (vous ne serez ni invité ni informé de cette exigence).)

Ensuite

SELECT SUBSTRING(UNCOMPRESS(<COLUMN_NAME>),1,2500) FROM <Table_name>;

ou

SELECT CAST(UNCOMPRESS(<COLUMN_NAME>) AS CHAR) FROM <Table_name>;

Si vous ne mettez que UNCOMPRESS(<COLUMN_NAME>), vous pouvez cliquer avec le bouton droit de la souris sur blob et cliquer sur "Open Value in Editor".

3
Stephanie

J'ai reconstitué quelques-uns des autres articles ensemble, car la correction des préférences de l'atelier ne fonctionnait pas pour moi. (WB 6.3)

SELECT CAST(`column` AS CHAR(10000) CHARACTER SET utf8) FROM `table`;
3
mbunch

il y a peu de choses que vous puissiez faire

SELECT GROUP_CONCAT(CAST(name AS CHAR))
FROM product
WHERE  id   IN (12345,12346,12347)

Si vous voulez commander par requête, vous pouvez aussi commander par casting comme ci-dessous

SELECT GROUP_CONCAT(name ORDER BY name))
FROM product
WHERE id   IN (12345,12346,12347)

comme il est dit sur ce blog

http://www.kdecom.com/mysql-group-concat-blob-bug-solved/

2
Kdecom

Remarque: les réponses précédentes ici ne sont pas particulièrement utiles si le BLOB est une séquence d'octets arbitraire; par exemple. BINARY (16) pour stocker 128 bits GUID ou md5 somme de contrôle.

Dans ce cas, il n'y a actuellement aucune préférence de l'éditeur - bien que j'ai soumis une demande de fonctionnalité maintenant - voir cette demande pour une explication plus détaillée.

[Jusqu'à/sauf si cette demande de fonctionnalité est implémentée], la solution est HEX fonction dans une requête: SELECT HEX(mybinarycolumn) FROM mytable.


Une alternative consiste à utiliser phpMyAdmin au lieu de MySQL Workbench - l'hex est affiché par défaut.

1
ToolmakerSteve
select CONVERT((column_name) USING utf8) FROM table;

Dans mon cas, Workbench ne fonctionne pas. J'ai donc utilisé la solution ci-dessus pour afficher les données blob sous forme de texte.

0
chil