我正在测试 Google Cloud SQL,并且必须测试指令 LOAD DATA INFILE
和 SELECT...INTO OUTFILE
。
我了解到可以使用LOAD DATA LOCAL INFILE
指令代替LOAD DATA INFILE
,但如何在 Cloud SQL 中使用它?
指令SELECT...INTO OUTFILE
可以按原样使用吗?
感谢 Renzo 的回答,但是当我在连接到 Cloud SQL 实例时尝试执行指令 SELECT.. INTO OUTFILE 时,收到以下错误消息:
第 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 实例上创建文件夹?您认为最好的解决方案是什么?
提前致谢
最佳答案
根据页面关于Importing data into Cloud SQL ,
you can also use the
LOAD DATA LOCAL INFILE
statement in the mysql client, which loads a local file to the database
您可以按照此 link 中的示例步骤操作首先通过 Cloud Shell 连接到您的 Cloud SQL 实例来启动 mysql 客户端。连接后,您将能够执行导入语句:LOAD DATA LOCAL INFILE
。
可以应用相同的步骤进行导出,并且可以按原样使用语法SELECT...INTO OUTFILE
。与其他替代方案一起,也可以在 Exporting data from Cloud SQL 上找到。 :
Exporting in CSV format is equivalent to running the following SQL statement:
SELECT <query> INTO OUTFILE ... CHARACTER SET 'utf8mb4' FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '\"' ESCAPED BY '\\' LINES TERMINATED BY '\n'
执行完操作后,建议check their status特别是如果它长时间运行或发生错误。
关于mysql - 在 Cloud SQL 中使用 LOAD DATA INFILE 和 SELECT INTO OUTFILE,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56022810/