如何将文件从postgreSQL保存到本地?
How to save files from postgreSQL to local?
我有一个要求,在 Azure PostgreSQL 中托管的 table 中保存了很多文件(例如图像、.csv)。文件保存为二进制数据类型。是否可以通过 SQL 查询将它们直接提取到本地文件系统?我正在使用 python 作为我的编程语言,感谢任何指南或代码示例,谢谢!
如果您只是想从SQL中提取二进制文件到本地并另存为文件,请尝试以下代码:
import psycopg2
import os
connstr = "<conn string>"
rootPath = "d:/"
def saveBinaryToFile(sqlRowData):
destPath = rootPath + str(sqlRowData[1])
if(os.path.isdir(destPath)):
destPath +='_2'
os.mkdir(destPath)
else:
os.mkdir(destPath)
newfile = open(destPath +'/' + sqlRowData[0]+".jpg", "wb");
newfile.write(sqlRowData[2])
newfile.close
conn = psycopg2.connect(connstr)
cur = conn.cursor()
sql = 'select * from images'
cur.execute(sql)
rows = cur.fetchall()
print(sql)
print('result:' + str(rows))
for i in range(len(rows)):
saveBinaryToFile(rows[i])
conn.close()
这是我的样本 SQL table :
结果:
我有一个要求,在 Azure PostgreSQL 中托管的 table 中保存了很多文件(例如图像、.csv)。文件保存为二进制数据类型。是否可以通过 SQL 查询将它们直接提取到本地文件系统?我正在使用 python 作为我的编程语言,感谢任何指南或代码示例,谢谢!
如果您只是想从SQL中提取二进制文件到本地并另存为文件,请尝试以下代码:
import psycopg2
import os
connstr = "<conn string>"
rootPath = "d:/"
def saveBinaryToFile(sqlRowData):
destPath = rootPath + str(sqlRowData[1])
if(os.path.isdir(destPath)):
destPath +='_2'
os.mkdir(destPath)
else:
os.mkdir(destPath)
newfile = open(destPath +'/' + sqlRowData[0]+".jpg", "wb");
newfile.write(sqlRowData[2])
newfile.close
conn = psycopg2.connect(connstr)
cur = conn.cursor()
sql = 'select * from images'
cur.execute(sql)
rows = cur.fetchall()
print(sql)
print('result:' + str(rows))
for i in range(len(rows)):
saveBinaryToFile(rows[i])
conn.close()
这是我的样本 SQL table :
结果: