使用应用程序引擎Python将内容从大型CSV上传到CloudSQL
我对谷歌应用程序引擎相当陌生 我需要做的是将一个相当大的CSV上传到CloudSQL。 我有一个HTML页面,有一个文件上传模块,当上传到Blobstore时 之后,我用Blob读取器打开CSV,并使用cursor.execute(“插入表值”)执行CloudSQL的每一行。这里的问题是,我只能执行HTTP请求一分钟,而不是在这么短的时间内插入所有数据。它还使屏幕处于加载状态,如果可能的话,我希望通过在后端运行代码来避免这种情况 我还尝试了“加载数据本地填充”的方式 当我通过终端连接到CloudSQL时,“加载数据本地填充”可以从我的本地机器工作。而且很快。 我将如何在应用程序引擎中使用此功能 或者在从HTML上传CSV后,有没有更好的方法直接通过Blobstore或Google云存储将大型CSV导入CloudSQL?使用应用程序引擎Python将内容从大型CSV上传到CloudSQL,python,google-app-engine,csv,google-cloud-storage,google-cloud-sql,Python,Google App Engine,Csv,Google Cloud Storage,Google Cloud Sql,我对谷歌应用程序引擎相当陌生 我需要做的是将一个相当大的CSV上传到CloudSQL。 我有一个HTML页面,有一个文件上传模块,当上传到Blobstore时 之后,我用Blob读取器打开CSV,并使用cursor.execute(“插入表值”)执行CloudSQL的每一行。这里的问题是,我只能执行HTTP请求一分钟,而不是在这么短的时间内插入所有数据。它还使屏幕处于加载状态,如果可能的话,我希望通过在后端运行代码来避免这种情况 我还尝试了“加载数据本地填充”的方式 当我通过终端连接到Cloud
另外,是否可以将任务队列与Blob存储一起使用,然后将数据插入后端的CloudSQL中?我对数据存储使用了类似的方法,而不是CloudSQL,但相同的方法可以应用于您的场景
from mapreduce import base_handler
from mapreduce import mapreduce_pipeline
from custom_input_reader import GoogleStorageLineInputReader
def testMapperFunc(row):
# do process with csv row
return
class TestGCSReaderPipeline(base_handler.PipelineBase):
def run(self):
yield mapreduce_pipeline.MapPipeline(
"gcs_csv_reader_job",
"main_app.testMapperFunc",
"custom_input_reader.GoogleStorageLineInputReader",
params={
"input_reader": {
"file_paths": ['/' + bucketname + '/' + filename]
}
})
class BeginUpload(webapp2.RequestHandler):
# do whatever you want
upload_task = TestGCSReaderPipeline()
upload_task.start()
# do whatever you want
您可以尝试通过云控制台导入CSV数据:
谢谢你的提示!我面前有很多书要读。您能再解释一下非默认模块部分以及我应该如何使用它吗?我现在正在阅读任务队列。目前看来这是可行的。我需要一些时间来理解Mapreduces@MetalloyD即使没有模块也可以。我使用模块只是为了使处理程序不是主应用程序的一部分。我将编辑我的答案以详细说明mapreduce部分。好的,谢谢!:顺便问一下,是否可以使用任务队列处理BLOB?我有一个UploadHandler类,它接受CSV导入并处理它。我使用JINJA2来放置blobstore.create\u upload\u url()链接用于文件上传。我可以使用JINJA2中的任务队列吗?因为如果我从UploadHandler类调用任务队列,我将丢失到该文件的链接。在进行任务队列调用时,我只能在参数中传递字符串。所以基本上我要说的是我的JINJA指向/uploadcsv,我的任务队列是/worker。如果我从上传CSV类调用/worker,我将丢失文件链接thx@MetalloyD我不确定我是否完全理解你的问题。如果您使用Blob存储CSV,我建议您使用GCS并按照我的建议将CSV存储为简单文件。另一方面,我不明白调用任务队列时丢失链接是什么意思。请详细说明并提供问题中的编辑,以便我可以在可能的情况下提供帮助。不过,我需要通过Python进行编辑。以编程方式。