Hello
I have an app where users need to upload an xls file through the file uploader. This file gets turned into a CSV through the workflow and an API, but most users get an error because their file has more than 100 rows. Is there any way to raise this restriction or a workaround to fix this? I was thinking maybe splitting the csv or xls file into various files through an api or plugin.
Unfortunately there’s no way to bypass the actual row # limit, but here are a few thoughts:
Upgrading your Bubble plan will increase the limit
Offering clear instructions to your users to only upload to the limit will reduce errors.
Use this handy plugin by @copilot to parse the CSV before importing. You can display the parsed result in a Repating Group and then count the number of parsed blocks to check if they’ve surpassed the limit. This will be make error handling a bit easier.
Yes, use a multi-file uploader to allow the user to upload multiple files (each up to the limit in rows), and then pass that list to an API workflow to run Upload CSV action on each file. This can either be through a recursive workflow or through Schedule an API Workflow on a list.
Thank you very much for your help, i will check that out!
Could you also explain what the parsing means? i have ran into parsing a couple of times when looking for a solution to this problem but i do not understand what it does
look into regex my friend. Pack your sheet into a single data point in one cell in excel implementing your home brew of some csv variant… then you can simply pull that in. Last time I checked, a single cell can handle many characters before you crash your system. I think I remember a cell holding half a million characters before it crashed my computer. 100K characters should be no problem. Then you can create some iterative system to unpack your data on the Bubble side.
If you need to get that done, I’ve really found regex to mah jam.
It’s not the easiest thing to do, but regex is a supah dupah tool for manipulating data
If you already have a comp sci degree, I sincerely apologize for my knuckle-headed suggestion.
I find limitations like this very frustrating and really hinders using Bubble for many business applications. Such low limits is unrealistic to apply in the real world. I wish they would reconsider things like this as they are maturing the product.
These are the growing pains of a concept on the cutting edge, the wild west of bringing codeless coding to the masses. You are totally right David. This is annoying. However think about what Bubble is… They’re working constantly on updating the platform. I’ve been here for years and have been impressed with the speed of this concept’s 진화 (evolution). If you’re really working at scale or in an enterprise situation, buddy up with a coder and have them bridge the gap with some code.
I’m sure the csv problem will iron itself out in time. Necessity is the mother of invention and I’m sure an excellent plugin is rattling around the mind of some programmer/bubbler out there.
Thank you for the quick response yesterday. I thought about regex, however it always takes me forever to get it right and then there are always some exceptions like special symbols etc.
Solution was very simple in the end:
I did the above, used data parser to get csv into repeating group.
Set up a new API end point in your workflows that created new thing. Example shows it as dataUpload.
Set up a new API call through Bubble’s API Connector. API call upload (Please see picture below) Don’t forget to set it as POST, Action, and add headers: key: content-type Value: application/json.
Then just create a workflow on the page that triggers API call upload : Schedule API workflow on a list.
Only tested on 140 records so far. So it might have it’s limitations.
Unless I’m misunderstanding your approach, I know that depending on the plan you are on, the limit to the records you can import is limited. Using Professional account you get 200, instead of 100. Maybe you’re on the Professional plan? Still a rather low limit for such a task. I could see a couple of thousand as a realistic limit for paid plans of any nature.
@josh any possibility of raising such a low limitation for functionality that you have already built into the system, and save us Bubblers many hours of frustrations trying to find a workaround for something you already have? Doesn’t sound like it would take any effort on your end (I would guess),but help us all out.
You could use the bubble plugin, and process the results through a workflow using the “run javascript” action and using str.split(’,’). Then pass the results into a javascriptToBubble icon and use that to trigger an event.
The only problem i have found is that if you need to process that data further on (for example counting them or editing them, you have to do that inside the “javascriptToBubble” event, as if you try to save that data it somehow gets deleted and just appears as a blank data line.
Thanks for the feedback. Unfortunately, I don’t know JavaScript and really don’t want to be forced down that path. I know there are many others that do know it, and am hoping that maybe someone writes a plug-in for this. To me, the quick and simple resolution would be for Bubble to just take off the low limit they placed on functionality they already built and is out there for us to just select. They did something similar with their SQL Connector, which runs me about $70/month to have a workaround in place, instead of them simply moving up a similar unrealistic low limit on their SQL Connector.
This is the way. Been using this in my own apps and successfully uploaded multiple 1000 row+ CSVs with no issues - Follow his instructions (which are well laid out in the demo) and you’ll be golden. @eli
Hey Eli, love your plugin (which i found out about from this thread) and am going to try it out. One question, regarding the functionality of your plugin where the user is asked to manually map their own columns… is it posisble auto map the columns? I have same column headers in my csv as bubble db and would like to hide that process from the UI? Is this possible with your plugin?
Hey Eli, I installed your plugin yesterday and got it running the way you suggested - all good. The reason I don’t want the UI is my web app is for a club that manages events. They get their raw event data (who’s coming, catagories and other data) from a national event body (via a CSV download). They then do a lot of work for the event by adding more spreadsheets/docs etc to manage the workings of their events based on that CSV. The national body doesn’t offer API interfaces. So my web app simply uploads the CSV and replicates the data in bubble DB. The user is not technical and only wants to “get the data into the app”. So the reason I love your plugin is that it takes the upload file and breaks it down to separate files prior to import so that I can import CSV’s over 100 records long without having to ask the user to do that first. Hope that all makes sense. Your UI (which is great by the way) is not a show stopper, but the user can potentially change mapping and cause an issue. So ideally, I want to hide the interface, automap the fields, and run your “CSV generates a new file” event from a separate button (or possibly autorun after successful import) - is there a way to do this in Bubble? BTW I should mention I’m new to bubble - about in my 6th week and loving it, so there might be other ways to solve my issue, but so far your plugin has been the best solution I’ve found. Love your work Eli (and your video walkthrough was essential for me so thanks for that too)
I should mention also that the CSV has over 140 fields in the download so scrolling to the bottom of the list to press the import button also adds to the look and feel not being quite right. Having said all that Eli, this is all still usable as is.
My goal was to solve the problem with mapping columns to field names with a front-end UI and didn’t really account for the general processing functionality being useful. Your use case makes sense though and I can see that being a perhaps somewhat common scenario.
I’ll take a look at the code and see if I can add an option that lets you hide the mapping UI but maybe keeps the button to upload the file and start the process.
This would be useful. I have an idea for an app that would have users uploading their CSV daily, so the mapping portion would become redundant, and since the auto mapping is available, it would make the UI unnecessary for the display.