0

Drupal, while a great CMS/Website/Intranet platform, is poor at providing users ability to edit datasets as one might in a spreadsheet or openly editable database table. We get forced into form update, form update, form update etc. Point, scroll and click time wasted. I've yet to find the module or View to edit data like a spreadsheet but still maintain database structure.

In Drupal 6, via ODBC we could easily edit node title, node body, comments or other text fields through programs like OpenOffice Base, LibreOffice Base, Microsoft Excel/Access or HeidiSQL. With Drupal 7 the text/data is serialized (BLOBs) and therefore what was easy changes to many text fields at once is now not possible, easily anyway.

  1. What Drupal View setting, module or api/hook allows datasets to be edited, or
  2. How to unserialize BLOB data for viewing in external programs
  3. Stop Drupal 7 from serializing in the first place? or,
  4. Other
  • Maybe I didn't frame the question well but I swear in early D7 versions I couldn't see/read/view the field body in nodes via database GUI or ODBC to OpenOffice because it was serialized. Seems that must have been changed and my question is mute point now. – Cymatical Jan 24 '15 at 16:20
1

In normal circumstances you shouldn't edit raw database tables to make changes; there's an extensive API in place which you should use instead (whether that be via the UI, through custom code, interacting via REST, whatever).

Updating tables manually means you deny module hooks the chance to run, potentially leaving your site in an inconsistent state. Not to mention the fact that caches won't be invalidated, leaving your front-end inconsistent for a time.

To directly answer your questions:

A) I'm not sure what you mean by 'datasets' here. If you mean, how do you update a bunch of values for a bunch of entities (e.g. nodes) in one go, then the Views Bulk Operations module should be useful.

B) The data you're referring to is serialised using PHP's serialize() function. You can decode it with unserialize(). I can't comment on how you'd do that in, for example, Excel. Perhaps you could write VBA functions to mirror serialize()/unserialize() and apply them to the incoming/outgoing data?

C) You can't stop Drupal from serialising that data, it's baked right in. Well, you could theoretically do it, but it would be an awful lot of work. You'd probably also find the need to change a lot of contrib modules who rely on the known schemas.

D) I haven't used it personally, but I've heard good things about the Data module. Might be worth checking in to. Feeds might be of interest too.

To sum up: Providing users the ability to make changes to the site by directly manipulating database tables, outside of the API, isn't really one of Drupal's goals (or not one that I've seen mentioned before). If anything, I'd imagine they want to discourage that for the reasons I've mentioned above.

| improve this answer | |
  • Thanks for the feedback Clive. Helps us understand D7 serialize and the BLOB structure of MYSQL. That said, Views Bulk Operations and Data module have booth caused me errors and warnings on installations alongside need for additional unwanted modules that eat resources and/or lead to whitescreens - all just for some simple plain text title changes even if to several nodes/fields at once. As an aside, was my question actually voted down???? – Cymatical Nov 24 '13 at 21:57
  • Seems my original question was not well understood. Maybe should have just asked how to edit Drupal node title and body fields with OpenOffice or Microsoft Office database or spread sheet via mysql ODBC. I did so, no issues - snap easy with Drupal 6, but Drupal 7 serializes field data and so Open/Office cant read/write from/to Drupal mysql tables. To be clear, not trying to create new nodes or do vocabulary term additions etc etc just work with title & body field edits for preexisting nodes. As alternate to ODBC method, I've found EditableViews module does the trick. – Cymatical May 1 '19 at 6:40

Not the answer you're looking for? Browse other questions tagged or ask your own question.