我试图在Apache Superset中从csv平铺文件中创建一个新的数据库。有两个问题。首先,当我尝试编辑一个现有的数据库,并在 "允许上传csv "前面的复选框上打上标记时,根据错误信息,由于 "安全原因",它没有被保存。
第二,虽然我可以按照说明 此处 来从一些样本数据集发起一个模板数据库。我不知道如何才能在Superset中从一系列现有的csv表创建一个新的数据库。我所有的搜索都没有找到关于这个任务的任何线索。
我设法通过以下python脚本来回答第一个问题。
# import libraries
import mysql.connector
import sqlite3
from sqlite3 import Error
# creating connection to db_file (passing csv)
def create_connection(db_file):
""" create a database connection to a SQLite database """
conn = None
try:
conn = sqlite3.connect(db_file)
print(sqlite3.version)
except Error as e:
print(e)
finally:
if conn:
conn.close()
# saving the db file
if __name__ == '__main__':
create_connection(r"/home/smirs/git_repos/mydatabase2.db")
我仍然没有回答第二个问题。How to insert a new database (db file) into Superset?
为了创建一个新的sqlite数据库 被superset使用,你可以在终端输入:
sqlite3 csv_database.db。
然后,由于superset是要 掉包 对于sqlite,你应该在superset config.py文件中把以下参数设置为False。
PREVENT_UNSAFE_DB_CONNECTIONS = False。
之后,在superset中,创建一个新的数据库,并将其链接到之前创建的csv_database.db。SQLAlchemy的URI应该是这样的。
sqlite://pathtodatabasecsv_database.db。
我将以下选项勾选为True。 Allow Csv Upload, Allow CREATE TABLE AS, Allow DML.
最后从Sources菜单中选择Upload a CSV,以便在superset中创建一个新表,或者更新一个现有的表。