Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-cloud-platform/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
CSV使用云Shell从云存储导入云SQL_Csv_Google Cloud Platform_Google Cloud Storage_Google Cloud Sql_Google Cloud Shell - Fatal编程技术网

CSV使用云Shell从云存储导入云SQL

CSV使用云Shell从云存储导入云SQL,csv,google-cloud-platform,google-cloud-storage,google-cloud-sql,google-cloud-shell,Csv,Google Cloud Platform,Google Cloud Storage,Google Cloud Sql,Google Cloud Shell,我在云存储实例(bd_存储)上有一个CSV文件,需要导入到云SQL数据库(test)中已经创建的表(matriculas)。问题是UI导入选项默认使用逗号(“,”)分隔的字段,而我的CSV文件是分号分隔的(“;”) 我知道我可以使用文本编辑器将所有逗号改为分号,但CSV文件太大,我的电脑无法做到这一点(这就是我使用谷歌云平台的原因)。如何使用云Shell来实现这一点 以下是一些我尝试过但没有成功的例子: 注意:我使用gcloud sql connect mschiaff--user=root登录

我在云存储实例(bd_存储)上有一个CSV文件,需要导入到云SQL数据库(test)中已经创建的表(matriculas)。问题是UI导入选项默认使用逗号(“,”)分隔的字段,而我的CSV文件是分号分隔的(“;”)

我知道我可以使用文本编辑器将所有逗号改为分号,但CSV文件太大,我的电脑无法做到这一点(这就是我使用谷歌云平台的原因)。如何使用云Shell来实现这一点

以下是一些我尝试过但没有成功的例子:

注意:我使用
gcloud sql connect mschiaff--user=root
登录,然后
使用test
指定数据库,其中“mschiaff”是云sql实例

  • 错误:

    2(HY000):未找到文件“gs:/bd_storage/Matrícula_Ed_Superior_2016_UPLOAD.csv”(错误代码:2“无此类文件或目录”)

  • 错误:

    错误1045(28000):拒绝用户“root”@“%”的访问(使用密码:是)


  • 这是我的论文。

    我有几个建议,你可以用其中的一个来实现这一点

    LOAD DATA LOCAL infle
    不能用于指向存储桶,因为它希望文件存储在本地。因此,您需要一份存储在用于连接到CloudSQL实例的计算机的文件系统中的CSV副本。例如,假设您将从Cloud Shell执行此操作

    1) 将CSV从存储桶复制到云Shell中的主目录:

    cd ~
    
    gsutil cp gs://YOU_BUCKET_NAME/file.csv .
    
    gcloud sql connect CLOUDSQL_INSTANCE_NAME --user root
    
    1) 从云Shell连接到CloudSQL实例:

    cd ~
    
    gsutil cp gs://YOU_BUCKET_NAME/file.csv .
    
    gcloud sql connect CLOUDSQL_INSTANCE_NAME --user root
    
    2) 连接到正确的数据库:

    use DATABASE_NAME;
    
    3) 将csv导入数据库中的表中,并指定分号分隔符(此命令中的文件位置将在Cloud Shell文件系统中查找该文件,因为这是您连接的位置):

    您现在应该已经成功地将CSV导入到数据库表中了

    或者,如果无法打开文件以将分隔符更改为逗号而不是分号,则可以尝试将CSV所在的存储桶装载到计算引擎实例,然后从该实例运行
    sed
    命令以将文件中的所有分号替换为逗号

    您可以使用FUSE将bucket装载到实例。这方面的说明如下

    装载到实例后,可以在CSV上运行以下命令以将分号替换为逗号

    $ sed -ie "s/;/,/g /path/to/mount/point/file.csv
    

    用逗号替换分号后,就可以通过控制台导入CSV了。

    如果对您有意义,Amazon RDS支持加载数据本地填充,并添加以下连接参数(应包含在连接字符串中)

    请阅读-总结是,这不是一个理想的方式来解决志愿者,可能会适得其反获得答案。请不要将此添加到您的问题中。
    $ sed -ie "s/;/,/g /path/to/mount/point/file.csv
    
    ENABLE_LOCAL_INFILE=1