我是CloudSQL的新手,我正在尝试插入40多个不同列和超过150万行的记录。但是,我无法在Google CloudSQL中执行此操作。我采取了以下许多措施来解决此问题,但是我得到的主要错误是:
ERROR:
textPayload: "2019-04-12T06:10:47.348295Z 8554 [Note] Aborted connection 8554 to db: 'xxxxx_xxx' user: 'root' host: 'x.x.x.x' (Got an error reading communication packets)"
摘要:
PyMySql
将150万行数据插入35列的表中MySql
错误日志显示了以上内容。我已经尝试了以下操作:
现在使用API URL
使用.txt
/ .json
/ .csv
文件进行上传。
我认为这是系统问题,因此将系统从8GB内存升级到15GB内存。
考虑到SQL默认配置正在引起限制,我添加了以下内容:
sql_mode:MAXDB,NO_AUTO_CREATE_USER
max_allowed_packet:1073741824
net_read_timeout:4294967295
wait_timeout:31536000
插入的行数较少,最大可插入行数= 100
def adddata():
try:
conn = pymysql.connect(unix_socket='/cloudsql/' + 'karto-235001:asia-east1:karto', user='xxx', password='xxx', db='xxx')
cur = conn.cursor()
insert_ = "INSERT INTO data_table(a, b, c) VALUES (%s, %s, %s)"
with open('info.csv', newline='') as myFile:
reader = csv.reader(myFile)
for item in reader:
cur.execute(insert_, (item[3], item[4], item[5]))
conn.commit()
cur.close()
finally:
conn.close()
我已经在线检查并实施了CloudSQL和其他堆栈溢出用户的推荐解决方案。是否有人可以识别我在做什么错,或者我的代码或配置有问题?非常感谢。
答案 0 :(得分:0)
我看到您想使用Python上传CSV文件中包含的信息。您是否尝试过直接导入数据库?您可以按照链接[1]中的步骤进行操作。
同时,我会尝试复制您的案子。您可能还需要检查安装和配置是否正确。
验证您的Cloud SQL实例和连接[2]以及您的Python安装[3]。
[1]https://cloud.google.com/sql/docs/mysql/import-export/importing#csv
[2]https://cloud.google.com/sql/docs/mysql/connect-compute-engine
[3]https://cloud.google.com/python/setup