Looking to move stuff over from Airtable - some Questions

Hey community,

I just recently stepped across SeaTable and I’m very happy to have an alternative to Airtable and even have the option to run it myself. We’re currently using Airtable as a CRM/Marketing backend and we pay for Airtable for around 5 years already. We’ve always lived with the limitations but were never happy with that. We were already looking to do something completely custom but first I wanna give SeaTable a chance.

Here’s a few questions before I try it out:

  1. Is there any smart way to move data over from airtable? We mainly use 3 tables within 1 base with several links between the tables.
  2. How about the limitation of table size? Airtable hard limits everything but enterprise customers to 50.000 rows which is mainly due to performance reasons on the browser as they tell us. How are the limitations with SeaTable on that end.
  3. One of the longest requested features on airtable and one we miss hardly is the option to link between bases, not only between tables. How about that on SeaTable?
  4. What are the performance needs on the serverside. Any outlines you could give on CPU power and Memory needed?

Thanks in advance!


Hi Frank,

glad you found us and welcome to the SeaTable Forum. I am partner at SeaTable GmbH and I hope I can answer your questions in a satisfactory manner.

Re 1.) Unfortunately, it’s really hard to migrate away from Airtable. They really lock their cutomers in. The only simple export option offered by AirTable, that we are aware of, is a CSV export. And, of course, a lot of meta information is lost when exporting the rich data into CSV.

We have looked into using Airtable’s API to export data into a format that we can then import into SeaTable, but Airtable’s API is not exactly great. And we dropped it for the time being.

What does SeaTable offer? You can import XLSX and CSV as well as SeaTable’s DTABLE files. DTABLE is not a proprietary format, it’s just a container for a JSON file and file attachments. (More on DTABLE files here.) Logically, you can also push data into SeaTable by means of our API - which is 100 times better than Airtable’s. (No kidding!)

Re 2.) Currently, SeaTable has a record limit of 100.000. Same reason as with Airtable: A base must be loaded into memory in its entirety and very big bases degrade server performance.

We are working on a new backend that will allow you to store a seven digit number of rows in your base. We’ll say more about it by the end of the year.

Re 3.) SeaTable cannot link bases directly, but we have a feature which should meet your requirements: Common Datasets (CDS). CDS are read-only views of tables which can be shared internally (=with other groups in your SeaTable team) and which can be imported into a SeaTable base as a table.

This is what you do:

  • You create a CDS from the table/view that you want to link (first screenshot below)
  • You share the CDS with the group that possess the table in which you will import the CDS
  • You create a new table in the target base using the CDS (second screenshot below)

If the source table/view of the CDS changes, you can update the data in the target base by refreshing the CDS import.

Hasn’t been clear? Please follow up or play around with it!

Re 4.) I quote the SeaTable manual: “SeaTable EE requires 4 cores and 8GB RAM. These resources guarantee good performance for most applications with several hundred concurrent connections. When the bases become large, more RAM may be needed since SeaTable stores the bases in memory.”

@rdb thanks for getting back so quickly. This is highly appreciated.

Sidenote: You might wanna check your screenshots at some point - at least for me they don’t load. All I see is a broken link/chain symbol.

Other than that thanks for your detailled feedback. I think I’ll give SeaTable a try on one of my own servers and play around with it to see if I can use it for my needs at the current state. If it works I’ll probably try to do the export/import stuff via the API. I have done a bunch of Python scripts interacting with Airtable - it’s not good, and it’s slow as hell but I guess it should work to get the data over and most importantly keep the relational stuff intact.

Fixed, sorry for that.

Sure! Keep us posted about your evaluation.

If you succeed, could you provide that to the community? That would be amazing!

Thanks again for your reply, Ralf.

I wonder how much sense it makes to just use this thread to document my findings and ask questions but as I’m still quite new I hesitate to open separate threads for each one. Let me know if that doesn’t work well here.

First of all congrats on the easy installation process. The documentation is quite good. I got up and running on my own little vm within minutes.

One thing that confused me: I didn’t need to put an email for Lets encrypt in the config. Not sure which one you are using there but I thought there needs to be an email for eny issue notifcations from LE. Just a small thing but that came to mind.

Apart from that everything went fine. It’s very interesting to have something like Airtable running on your own machine and seeing how performant it can be when you’re not running on a server/farm with hundreds or thousands of other users.

Speaking about performance: I imported a bunch of rows and noticed that scrolling only a bit faster leads to rows not showing quite quickly. The data loads relatively quickly once you stop but it just makes skimming over bigger bunches of data a bit more complicated then over at Airtable - they seem to load Row by row instead of chunks after you stop or slow down scrolling. Again not a big deal - just wanted to leave it as a first impression.

Another first impression is that the UI sometimes could be a bit more explanatory. For example after importing a csv file with ~25k rows, I didn’t get any message. The new table with the data just appeared and after working with it a bit I noticed that there are only 10k rows. I thought it must have been an error that caused this and started looking through logs only to find the info on the forums after a bit that imports from csv are limited to 10k rows. It would be good to get a message in the UI that tells me about this limitation. Ether right before the upload or at least as kind of an error message when uploading a file with more than 10k rows.

Also the first column of each table: I’m quite sure I saw an info somwhere that this column is working as a special column (identically to AirTable) and is basically a primary field. I can’t seem to find this info again today. Also I’m not told why the number of column types is so limited there. The latter is really unfortunate as we use a formula their on AirTable - so it looks like this is something we need to work around then. Is there any chance this limitation will go away? We use the formula to dynamically build the text in this primary field as it is used when linking tables. This way the information shown on the other table is a bit more helpful for us. Not sure if this is the same with SeaTable but I would guess so. Not being able to use a Formula there makes it a bit harder.

This gets really long - sorry if this is inconvenient for you to work through.

I’m totally blown by the Script feature. Though technically nothing too special this will be a huge advantage over AirTable for us as we currently need to use the API to do some “cleanup” work that could easily done via the Scripts feature. I wanted to play around with it on my Free Enterprise install but it told me that my plan doesn’t support running pything scripts. I’m a bit confused as I thought there shouldn’t be any of these limits on the self install version (apart from the 3 user limit). Is this a bug or am I missing something? Creating a JS script doesn’t bring up this message.

That’s it for now. So far for my first impression. Overall I have to say I’m really impressed and this really looks promising. I’d also happily spend some money if this is going to work for us. We’re currently throwing money at Airtable where there’s close to no support, no work around the 50k rows limit, close to no improvements to core problems over the years, sometimes really slow UI and the data is “somewhere”. Being able to run this ourselves and still continue with all the flexibility and connectivity (Zapier) that we already enjoy would be awesome.

Good work, team :+1:

Please consolidate your questions in this thread.

I cannot say. @daniel.pan Can you shed light?

Glad to hear! :slight_smile:

This is a little icon displayed in the first column’s heading. Once you click it, it disappears. It is true that the column type selection in the first column is a bit reduced. We are working on it. So when you are asking if there is any chance that this limitation will go away, the answer is a clear yes. But I cannot commit any date / SeaTable version.

I enjoy hearing that.

This confuses me too. The ability to run Python scripts should be unlimited in SeaTable DE.

An integromat app and an n8n node are under active development. In addition to the dominant US option, you’ll soon have a European and self-hosted option.

As for your remarks regarding error message/explanatory hints, scrolling, … we hear you and we are working on it. In any case, thanks for taking the time and your appeciated comments.

I see where you’re heading there :slight_smile: :+1:

Good point there: What exactly is the Developer Edition? I read about it but not sure if it’s just the EE without a license file installed? So what I’m using right now is the Developer Edition?

Anyways… I will try to replicate at least parts of the existing structure in AirTable and if that works well I’m going to try to transfer the data via the api.

We are not always consistent in what we do, but sometimes we are.

SeaTable DE is an offer for developers that want to use SeaTable as a flexible database backend. Yet, it’s more than just a backend with a bunch of APIs. It also comes with the web-based table editor that allows easy data capture and manipulation as well as real time collaboration. It does not ship with all features though.

How are things going? Maybe the brand new SeaTable 2.1 brings some more interesting features to the table.

It’s been a while! Are you still testing? Do you care to share the results of your tests?

We have developed a migration script that facilitates the migration from Airtable to SeaTable! No need to write something yourself. We’ll post a manual for the script in a few days here.

it’s really been a while. I didn’t manage to do some serious testing so gar but still have it on my list.

Good news about the migration script - am happy to see how it would work for me. It will likely break at some critical differences between airtable and Seatable but that’s something we could test then.


Hey, are there any news about the manual for the migration script? I am looking forward to moove my stuff :slight_smile:

The script is still being tested and will be published as a beta for public test very, very, very soon!

1 Like

Great :slight_smile: Sorry for being impatient :slight_smile:

Don’t be!

There has been some hiccup along the way and we’ll publish the script in the coming weeks. Hang on!

1 Like

Hello @Helmi @emch2 , I’m glad to share with you, that the script is online! Have a look here:
Migrate An Airtable Base to SeaTable with this Script [Beta] - Tips & Tricks - SeaTable

1 Like

already tried it :slight_smile:

It went actually pretty smooth. Some things do not work but this is probably a restriction of the API from AirTable. All in all it took me like 15 Minutes for a bigger base to migrate.

Formulas have to be created new but that is probably because you do not see the formula in the api.

In general: Thanks for your work!


You are welcome! Thanks for your feedback. I’m just curious what thing didn’t work…

Ok let me try to sum up:

  • Functions were imported as hardcoded values instead of the function (but here there is probably no option to do it better)
  • Durations were in all cases imported as number (but the text sais that sometimes not all datatypes are recogniced exactly)
  • The first line that is called Number in my base was not used as first line in the import even though I added it as first row in the python script for the table. So it also did not take the auto number feature. All others had the standard name so I do not know if I just messed sth up here)
  • Of course the Plugins and views were not imported but it said this before and this is probably also not in the api. It took me five minutes to create some even better diagrams. < actually the new statistics plugin is great :slight_smile: (btw: the stacked histogram has an error that you can not delete items when saying to sum up multiple items for y. Or lets say the button is missing.)

So it is not that you run the script and can use the new base but have a bit work to do but it decreased my work from houres to minutes. It is great that this script exist!

1 Like

I see, thanks for your feedback. All these issues you have mentioned are included in the article I have published yesterday. I cordially invite you to read that article, or at least the table in it for all the data types. Have fun!

1 Like

This topic was automatically closed 2 days after the last reply. New replies are no longer allowed.