Open2

Study Tree

otukurayoichiotukurayoichi

データベース上のUser と base64の情報の紐づけクエリ1

SELECT REPLACE(TO_BASE64(バイナリ), "\n", "")
FROM 中継テーブル INNER JOIN クレデンシャルテーブル ON ユニークIDの一致
WHERE 結合後の条件;

データベース上のUser と base64の情報の紐づけクエリ2

SELECT REPLACE(TO_BASE64(バイナリ), "\n", "")
FROM 中継テーブル
INNER JOIN クレデンシャルテーブル ON ユニークIDの一致
INNER JOIN ユーザーテーブル ON ユニークIDの一致
WHERE 結合後の条件;

CSV(User と base64の情報記載)からjpgファイル生成bashスクリプト

# convert jpg file from csv
cat バイナリ.csv | xargs -I{} sh -c 'echo {} | cut -d , -f 5 | base64 -di > $(echo {} | cut -d , -f 1)_$(echo {} | cut -d , -f 2)_$(echo {} | cut -d , -f 3)_$(echo {} | cut -d , -f 4).jpg'

jpgファイルをCSV(User と base64の情報記載)に書き出すスクリプト
https://stackoverflow.com/questions/15063936/csv-error-field-larger-than-field-limit-131072

import sys
import csv
import base64
maxInt = sys.maxsize
 
while True:
    # decrease the maxInt value by factor 10 
    # as long as the OverflowError occurs.
 
    try:
        csv.field_size_limit(maxInt)
        break
    except OverflowError:
        maxInt = int(maxInt/10)
 
filename = 'example.csv'
with open(filename, 'r') as f:
    reader = csv.reader(f)
    try:
        for row in reader:            
            imgdata = base64.b64decode(row[4])
            filename = '{}.jpg'.format(row[1])  # I assume you have a way of picking unique filenames
            with open(filename, 'wb') as f:
                f.write(imgdata)
 
    except csv.Error as e:
        sys.exit('file {}, line {}: {}'.format(filename, reader.line_num, e))