¿Quiere trasladar sus bases Airtable a SeaTable y tiene miedo del esfuerzo? ¡No se preocupe! Incluso las bases con estructuras de datos complicadas y muchos miles de registros de datos pueden ser transferidos a SeaTable con poco esfuerzo.
Hemos desarrollado un script de migración para transferir datos de Airtable a SeaTable. Esto transfiere todos los datos de una base Airtable - tablas, columnas, registros de datos - a una base SeaTable de una sola vez. Después de la migración, puede continuar en SeaTable con los datos que utilizó por última vez en Airtable. Después de ejecutar el script, sólo unos pocos ajustes son necesarios.
El script puede ser utilizado por cualquier persona - técnicos y no técnicos por igual. Sin embargo, debido a las restricciones por parte de la API de Airtable, el procedimiento no es, por desgracia, muy automatizado. Algunas entradas manuales son necesarias para hacer el script operativo. En este artículo explicamos cómo hacerlo.
Cómo migrar una base de Airtable a SeaTable
1. crear la base
Cree una nueva base en SeaTable. El nombre de la base SeaTable no tiene que corresponder al nombre de la base Airtable a importar. Puede elegir el nombre libremente.
2. insertar script
En la nueva base, abra la gestión de s cripts haciendo clic en el icono de script de la cabecera de la base, arriba a la derecha. A continuación, seleccione Añadir script. El script de migración está escrito en el lenguaje de programación Python. Por lo tanto, seleccione Python.
Ahora resalte el siguiente bloque de código, cópielo en el portapapeles y péguelo en la ventana izquierda del editor de scripts:
## Parametrizar el script # SeaTable - Destino server_url = 'https://cloud.seatable.io' api_token = '...' # Añadir el token API de la base SeaTable # Ver https://seatable.io/docs/en/seatable-api/erzeugen-eines-api-tokens/ # para más información sobre cómo crear un token API de SeaTable # Airtable - Fuente airtable_personal_access_token = '...' # Añadir un Token de Acceso Personal (PAT) # PATs son cadenas de 82 caracteres y comienzan con "pat" (por ejemplo, 'pat544WlSOq6T4Fvv.5710af6611aedbf28493c38084163494e02b24f078cf2d62f07105982a82a64d') # Véase https://support.airtable.com/docs/creating-personal-access-tokens/ # para más información sobre cómo crear un PAT en Airtable airtable_base_id = '...' # Añadir el ID de la base de Airtable # Base IDs son cadenas alfanuméricas y comienzan con "app" (e.g. 'appRfA3qspH3EJUnV') # Consulte https://support.airtable.com/docs/finding-airtable-ids/ # para más información sobre donde encontrar el id de una base Airtable nombres_tabla = ['...', '...'] # Añadir los nombres de todas las tablas en la base Airtable, es decir, ['tabla 1', 'tabla 2'] # Los nombres deben estar encerrados en '' y separados por comas primeras_columnas = [ ('...', '...'), ('...', '...'), ] # Especificar los nombres de las primeras columnas en cada tabla de la base Airtable. # Utilice el formato ('nombre_tabla', 'nombre_primera_columna'), es decir ('tabla 1', 'ID') # El nombre de la tabla y de la columna deben estar encerrados en '' y separados por comas enlaces = [ ] # Especifique los enlaces entre las tablas de la base Airtable # Utilice el formato ('nombre_tabla', 'nombre_columna', 'otro_nombre_tabla'), es decir, ('tabla 1', 'enlace a tabla 2', 'tabla 2') # Los nombres de tabla y columna deben ir entre '' y separados por comas # Si la base Airtable no contiene columnas de enlace, deje los corchetes vacíos mode = 'import-header' # Especifique el modo de ejecución del script, dos opciones: 'import-header' y 'import-rows' # Ejecutar 'import-header' primero para crear la estructura de datos en la base SeaTable # Ejecute 'import-rows' para importar todas las filas ## No se requieren más ediciones más allá de esta fila importar sys from seatable_api import Base, AirtableConvertor # from airtable_importer_settings import server_url, api_token, # airtable_api_key, airtable_base_id, table_names, first_columns, links def get_convertor(): base = Base(api_token, server_url) base.auth() convertor = AirtableConvertor( airtable_api_key=airtable_personal_access_token, airtable_base_id=airtable_base_id, base=base, table_names=nombres_tabla, first_columns=primeras_columnas, left=izquierda, ) devolver convertidor def importar_cabecera(): convertor = get_convertor() convertor.convert_metadata() def import_rows(): convertor = get_convertor() convertor.convertir_datos() if mode == 'import-header': import_header() elif mode == 'importar-filas': import_rows() else: print('No se ha especificado correctamente el modo.') ## Fin del script ##
No te preocupes si no entiendes el código que acabas de copiar. Se lo explicaremos. Los comentarios en el código deberían ayudar un poco con la interpretación. Los comentarios son todas las líneas con un signo de almohadilla ('#'). Estas líneas se ignoran cuando se ejecuta el script, es decir, puedes cambiar, borrar o añadir comentarios sin afectar a la funcionalidad del script.
A diferencia de los comentarios, las sangrías en el código son muy importantes a la hora de ejecutar el script. Por favor, no las cambie.
3. especifique la URL del servidor SeaTable y el token API de la base.
Bajo el comentario SeaTable - Destino, añada la URL del servidor SeaTable y especifique el token API. Si está utilizando SeaTable Cloud, la URL pre-rellenada "https://cloud.seatable.io" es correcta. Si está utilizando un servidor SeaTable diferente, introduzca su URL. (La URL debe introducirse siempre con https:// o http://.) La URL y el token deben ir entre comillas simples.
Este es un ejemplo de configuración cuando se utiliza SeaTable Cloud:
4. introduzca Airtable Personal Access Token y Base ID
Añadir debajo del comentario Airtable - Fuente el Token de acceso personal Airtable (PAT) y el ID de la base de la mesa de aireambos valores de nuevo entre comillas simples. El PAT debe tener la autorización data.records:read
disponible.
Así es como debería verse entonces:
5. introduzca los nombres de las tablas y columnas
Ahora dígale al script qué tablas quiere importar de la Base Airtable. Haga esto en la línea "table_names". Añada los nombres de las tablas entre corchetes - cada uno encerrado por una sola coma invertida y separados por una coma.
Para una base con las dos tablas "tabla 1" y "tabla 2", la fila debe tener, por ejemplo, el siguiente aspecto:
Si su base de mesas aéreas tiene más de dos mesas, simplemente amplíe la lista entre paréntesis. Si no desea transferir todas las tablas de una base, simplemente omita los nombres de las tablas que no desea copiar.
Debido a una limitación de la API Airtable, también debe especificar los nombres de las primeras columnas en las tablas. Esto se hace en la línea "first_columns" o las siguientes líneas.
Para la base airtable con las dos mesas "mesa 1" y "mesa 2" podría entonces tener este aspecto:
6. definir columnas de enlace
Para que SeaTable importe los datos correctamente, se requiere un paso más: la especificación de las columnas de enlace en la Base Airtable.
La variable "enlaces" está destinada a este fin. Por ejemplo, si la columna "enlace a la tabla 2" de la tabla "tabla 1" representa un enlace a la tabla "tabla 2", el script debe parametrizarse de la siguiente manera:
Sólo tiene que especificar una vez cada par de columnas de enlace. No es necesario especificar el enlace en ambas direcciones.
Si la base de la mesa de aire no recibe ninguna columna de enlace, puede dejar el soporte cuadrado vacío:
7. importar tablas y columnas
El script puede ejecutarse en dos modos: "importar-cabecera" e "importar-filas". En primer lugar, el script debe ejecutarse siempre en modo "import-header". En este modo, las tablas y columnas se crean en la base SeaTable y se importan 10 filas de prueba.
El modo de ejecución se define mediante la variable del mismo nombre:
Ahora ejecute el script haciendo clic en Ejecutar script. Mientras se ejecuta el script, puede ver los pasos que se han llevado a cabo en la parte derecha del editor. En segundo plano también puede ver cómo se crean las tablas y columnas.
8. comprobar las líneas de prueba
Compruebe ahora si
- se han importado todas las tablas y todas las columnas,
- se ha creado la primera columna correcta en todas las tablas y
- las columnas de enlace son correctas.
Como los tipos de columna de Airtable y SeaTable no son completamente congruentes, algunos tipos de columna en la Base SeaTable diferirán de los de la Base Airtable. La siguiente tabla muestra cómo los tipos de columna en Airtable se transfieren a SeaTable.
Tipo de columna ventilable | Importar a SeaTable Tipo de columna |
---|---|
Adjunto | Archivo |
Autonúmero | Número (Es posible la conversión a una columna de números de coche) |
Código de barras | Texto o número |
Botón | - (no es posible la migración) |
Casilla de verificación | Casilla de verificación |
Cuenta | Número |
Hora de creación | Fecha |
Moneda | Número |
Fecha | Fecha |
Duración | Número (Conversión a una columna del tipo duración posible) |
Envíe un correo electrónico a | Correo electrónico |
Fórmula | Fecha, texto o número |
Última modificación | Texto |
Última modificación | Fecha |
Enlace a otro registro | Enlace a otras entradas |
Texto largo | Texto con formato |
Búsqueda | Fecha, texto o número |
Selección múltiple | Selección múltiple (Sin migración de opciones no utilizadas) |
Número | Número |
Porcentaje | Número |
Número de teléfono | Texto o número |
Clasificación | Número (conversión a una columna del tipo calificación posible) |
Enrollable | Fecha, texto o número |
Texto de una línea | Texto |
Selección individual | Texto (Es posible la conversión a una sola columna de selección) |
Usuario | Texto |
URL | Texto |
Si algo no es correcto, compruebe las entradas de los pasos 5 y 6 y vuelva a ejecutar el script en modo "importar encabezado". Puede ejecutar el script tantas veces como desee.
9. importar todos los registros
Si la comprobación del paso 8. es satisfactoria, se pueden transferir todos los registros.
En el script, cambia el modo de "importar-cabecera" a "importar-filas":
Vuelva a ejecutar el script haciendo clic en Ejecutar script. De nuevo, puede observar la ejecución del script en la parte derecha y ver las actividades en segundo plano.
Ahora debería ver todos los registros de la Base Airtable en la nueva Base SeaTable. ¡Enhorabuena, la migración de los conjuntos de datos se ha completado!
Si no está satisfecho con el resultado final, elimine todas las tablas y comience de nuevo en el paso 7.
10. migración completa
El script de migración ha transferido todos los datos. Es posible que aún sea necesario realizar algunos ajustes manuales.
El script de migración no transfiere las columnas de fórmulas como columnas de fórmulas, sino que crea columnas de texto e inserta en ellas los resultados de las fórmulas. Esto significa que ahora debe añadir columnas de fórmulas manualmente en la Base SeaTable. Lo mismo se aplica a las columnas de tipo Count, Lookup y Rollup. Las columnas de botón no se transfieren en absoluto.
Dado que el orden de las columnas no se puede recuperar a través de la API Airtable, esta información no está disponible, por desgracia, al crear las columnas en SeaTable. Si desea restaurar el orden original, tiene que hacerlo manualmente.
Las vistas de la Base de Tablas Aéreas no se transfieren. Debe crear vistas usted mismo. Lo mismo se aplica a las automatizaciones, interfaces y scripts.
Área FAQ
¿Cambia el script los datos de mi Airtable Base?
No. El script sólo lee la base de la mesa de aire. Los datos de la base de la mesa de aire no se modifican.
¿Qué hago si recibo un mensaje de error?
Un mensaje de error en la primera ejecución no es en absoluto improbable. Hay muchas razones para ello, por ejemplo, un token incorrecto, una secuencia incorrecta en la especificación de los enlaces, errores tipográficos, comas que faltan o sangría incorrecta. Un solo error puede hacer que se cancele la ejecución del script.
Si recibes un mensaje de error, generalmente no es un problema. No se puede perder ningún dato. Proceda como se indica a continuación para encontrar la causa del error:
- En la mayoría de los casos, el mensaje de error le dará una pista de dónde encontrar el error. Sígala, corrija los parámetros introducidos y vuelva a ejecutar el script. Un error de sangría, por ejemplo, indica que la sangría no se corresponde con la sintaxis de Python.
- Si el mensaje de error es incomprensible, compruebe que todas las entradas son correctas y vuelva a intentarlo.
- Si ninguno de los consejos le ayuda, busque ayuda en el Foro SeaTable.
¿Pueden pasarse por alto las lagunas en la base de la mesa de aire?
Sí, esto puede ocurrir con columnas que contienen pocas entradas. En el modo importar-cabecera, el script comprueba las 100 primeras filas de la base Airtable. Si una columna no contiene una entrada en estas filas, la API de Airtable no devuelve esta columna y la columna correspondiente no se crea en SeaTable. En consecuencia, no se tiene en cuenta en la migración de todos los conjuntos de datos.
¿Se pueden migrar bases Airtable de cualquier tamaño?
En principio, sí. Sin embargo, el procedimiento presentado en este artículo con el editor Python integrado está sujeto a un límite máximo de tiempo de ejecución de 15 minutos, es decir, los scripts que se ejecutan durante más de 15 minutos se cancelan. En la práctica, esto es suficiente para la gran mayoría de las bases. Sin embargo, este límite puede jugar un papel importante en el caso de bases con archivos adjuntos grandes/muchos.
¿Es posible importar tablas a una base existente?
El script no requiere que la base esté vacía. Así que también puede ejecutar el script en una base con tablas existentes y rellenas. Lo único que debe evitar es duplicar los nombres de las tablas.