我正在测试Google Cloud SQL,并且必须测试指令LOAD DATA INFILE
和SELECT...INTO OUTFILE
。
我知道可以使用指令LOAD DATA LOCAL INFILE
代替LOAD DATA INFILE
,但是如何在Cloud SQL中使用它呢?
SELECT...INTO OUTFILE
指令可以原样使用吗?
谢谢Renzo的回答,但是当我尝试执行SELECT .. INTO OUTFILE指令时,我连接到Cloud SQL实例时,出现以下错误消息:
第1行出现错误1045(28000):用户'root'@'%'的访问被拒绝
我尝试使用连接到MySQL上的Cloud SQL实例的计算机上的指令LOAD DATA LOCAL INFILE,它可以正常工作。我使用计算机上的文件将CSV数据成功导入到表中。但是我想知道是否可以使用存储桶中存在的文件来执行相同的操作...
我试图解释我需要做什么:
我们正在将网站迁移到GCP App Engine / Cloud SQL。我们广泛使用LOAD DATA INFILE这两个指令,它们从文件夹“ ftp”中选择文件以将它们加载到数据库中。同样,我们使用SELECT INTO OUTFILE将数据导出为CSV文件到我们网站的文件夹中。因此,我担心的是能够在App Engine / Cloud SQL上使用相同的过程。
区别在于,网站实例和数据库实例在GCP上分开。是否应该在GCP上使用存储桶替换文件夹?还是我们应该在App Engine / Cloud SQL实例上创建文件夹?根据您的最佳解决方案是什么?
预先感谢
答案 0 :(得分:1)
根据有关Importing data into Cloud SQL的页面,
您还可以在 mysql客户端中使用
LOAD DATA LOCAL INFILE
语句,该语句将本地文件加载到数据库中
您可以按照此link中的示例步骤通过首先通过Cloud Shell连接到Cloud SQL实例来启动 mysql客户端。连接后,您将能够执行导入语句:LOAD DATA LOCAL INFILE
。
可以将相同的步骤应用于导出,并且语法SELECT...INTO OUTFILE
可以照原样使用。连同其他替代方法,也可以在Exporting data from Cloud SQL上找到:
以CSV格式导出等同于运行以下SQL语句:
SELECT <query> INTO OUTFILE ... CHARACTER SET 'utf8mb4' FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '\"' ESCAPED BY '\\' LINES TERMINATED BY '\n'
执行完这些操作后,建议您check their status使用,特别是长时间运行或发生错误时。