在Cloud SQL中使用LOAD DATA INFILE和SELECT INTO OUTFILE

时间:2019-05-07 12:37:37

标签: mysql google-cloud-sql load-data-infile select-into-outfile

我正在测试Google Cloud SQL,并且必须测试指令LOAD DATA INFILESELECT...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实例上创建文件夹?根据您的最佳解决方案是什么?

预先感谢

1 个答案:

答案 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使用,特别是长时间运行或发生错误时。