如何将表数据从本地数据库上传到云服务?

时间:2019-05-01 13:09:59

标签: mysql cloud mysql-python

我想将数据库从本地上传到AWS等云服务。 我已经从本地数据库成功创建了数据库以及云数据库中的表和列,但是无法传输数据。

我尝试使用python使用outfile和infile命令,但出现错误

mycursor3.execute("SELECT * FROM %s INTO OUTFILE '/var/lib/mysql-files/test.csv' "% (tb[0]))
sqlformula="LOAD DATA LOCAL INFILE 'test.csv' INTO TABLE %s "% (tb[0])
mycursor1.execute(sqlformula)
mydb1.commit()

文件已成功导出,但无法导入云中。 收到错误消息:mysql.connector.errors.InterfaceError:无法读取文件“ test.csv”

1 个答案:

答案 0 :(得分:0)

假设您有自己的问题的csv文件,则可以执行以下操作:

  1. 将文件上传到配置了AWS CLI且可以访问数据库的EC2实例中。

  2. 根据AWS文档,您可以将平面文件分为以下

    split -C 1024m -d test.csv test.part_

在类似Unix的系统(包括Linux)上,这会将文件分成小于1 GB的多个部分。

  1. 使用mysqlimport实用程序将平面文件加载到Amazon RDS中。在示例中,我们告诉mysqlimport加载所有名为“ test”的文件,扩展名为“ part_”。这是加载“分割”示例中创建的所有文件的便捷方法。使用--compress选项可最大程度地减少网络流量。 --fields-terminated-by =','选项用于CSV文件,而--local选项指定传入数据位于客户端上。如果没有--local选项,则Amazon RDS数据库实例将在数据库主机上查找数据,因此请始终指定--local选项。

对于Linux:

mysqlimport --local \
    --compress \
    --user=username \
    --password \
    --host=hostname \
    --fields-terminated-by=',' Acme test.part_* 

这是实际的文档: [https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/MySQL.Procedural.Importing.AnySource.html][1]