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
Google cloud platform GCP/Python:将csv从配置单元导入到CloudSQL时捕获subprocess.popen()中的实际错误_Google Cloud Platform_Hive_Subprocess_Google Cloud Sql_Popen - Fatal编程技术网

Google cloud platform GCP/Python:将csv从配置单元导入到CloudSQL时捕获subprocess.popen()中的实际错误

Google cloud platform GCP/Python:将csv从配置单元导入到CloudSQL时捕获subprocess.popen()中的实际错误,google-cloud-platform,hive,subprocess,google-cloud-sql,popen,Google Cloud Platform,Hive,Subprocess,Google Cloud Sql,Popen,我在GNU/Linux3.10和GCP上安装了Python3.6.8,我正在尝试将数据从Hive加载到CloudSQL gc_cmd_import_csv_p1 = subprocess.Popen(['gcloud', 'sql', 'import', 'csv', '{}'.format(quote(cloudsql_instance)),

我在GNU/Linux3.10和GCP上安装了Python3.6.8,我正在尝试将数据从Hive加载到CloudSQL

        gc_cmd_import_csv_p1 = subprocess.Popen(['gcloud', 'sql', 'import', 'csv',
                                         '{}'.format(quote(cloudsql_instance)),
                                         '{}'.format(quote(load_csv_files)),
                                         '--database={}'.format(quote(cloudsql_db)),
                                         '--table={}'.format(quote(cloudsql_table_name)),
                                         '--user={}'.format(quote(db_user_name)),
                                         '--quiet'],
                                        stdout=subprocess.PIPE,
                                        stderr=subprocess.PIPE,
                                        universal_newlines=True)
    import_cmd_op, import_cmd_error = gc_cmd_import_csv_p1.communicate()
    import_cmd_return_code = gc_cmd_import_csv_p1.returncode
    if import_cmd_return_code:
        print("""[ERROR] Unable to import data from Hive to CloudSQL. 
        Error description: {}
        Error Code(s): {}
        Issue file name: {}
        """.format(import_cmd_error, import_cmd_return_code, load_csv_files))
        sys.exit(9)
print("[INFO] Data Import completed from HIVE to CloudSQL.")
如果出现上述任何错误,我会收到如下消息:

Error description: ERROR: (gcloud.sql.import.csv) HTTPError 403: The client is not authorized to make this request.Error Code(s): 1 
但当我实际直接运行相同的导入命令时,如下所示:

gcloud sql import csv test-cloud-sql-instance  gs://test-server-12345/app1/data/lookup_table/000000_0 --database=test_db --table=name_lookup --user=test_user --quiet
我得到的实际错误如下所示:

ERROR: (gcloud.sql.import.csv) [ERROR_RDBMS] ERROR:  extra data after last expected column CONTEXT:  COPY name_lookup, line 16902:
我想要这个消息

(最后一个预期列之后的额外数据…第16902行:)

以python脚本而不是

HTTPError 403:

错误。如何捕捉?
请注意:没有HTTP错误提示的身份验证问题。

因此,在与GCP管理员进行长时间讨论后,我们发现了该问题

我们尝试使用
os.system()
执行相同的导入命令,然后再次出现HTTP错误。管理员随后重新查看了GCP IAM文档,并为P-SQL用户创建了一个角色。问题现在解决了