首页 > 解决方案 > 使用 PowerShell 将 MySQL blob(映像)迁移到 FileMaker 容器

问题描述

在搜索中,我找到了许多其他人尝试过,但没有一个成功。

这就是问题所在。我想将我存储在 MySQL 服务器上的一堆图像以 blob 的形式存储起来,并将它们移动到 FileMaker 容器中。

我得到的最好的线索是 putas 命令。它看起来像 putas ('$Image','JPEG')。

我的具体应用如下。$DataSet.Image1 是存储为“0xFFD8....”的 JPEG 文件。这种格式的数据很可能是问题所在,但我不知道首先需要将其转换为什么。

$cmd.CommandText = "update Checklists set Image1 = PutAs('$($DataSet.Image1)', 'JPEG')"
$cmd.ExecuteNonQuery();

我一直得到的只是语法错误,但我已经尝试了许多不同的语法,无论我做什么我都无法让它去。

我非常希望看到有人成功发布他们的示例。也欢迎任何其他想法或解决方法。

编辑:这是一些额外的信息。Skeleton Key 的 Greg Lane 给出了这个例子,但我不知道如何将它翻译成 PowerShell。

import java.sql.*; import java.io.*;
def url = "jdbc:filemaker://localhost/fmserver_sample";
def driver = "com.filemaker.jdbc.Driver";
def user = "admin";
def password = "";
System.setProperty("jdbc.drivers", driver);
connection = DriverManager.getConnection (url, user, password);
filename = "/Users/Greg/Pictures/vacation/DSC_0202.jpg";
file = new File (filename);
inputstream = new FileInputStream (filename);
sql = "INSERT INTO english_nature (ID, img) VALUES (-1, PutAs(?, 'JPEG'))";
pstatement = connection.prepareStatement ( sql );
pstatement.setBinaryStream (1, inputstream, (int)file.length ());
pstatement.execute ();
//cleanup
pstatement = null;
inputstream = null;
file = null;
connection.close();

标签: mysqlpowershellfilemaker

解决方案


我想到了。对于未来的任何人来说,这就是你如何做到的。

$cmd.CommandText = "update Checklists set Image1 = PutAs(?, 'JPEG') where serial = '$($DataSet.serial)' AND ChecklistNumber = 1"
$cmd.Parameters.Add('?', $DataSet.Image1)
$cmd.Prepare()
$cmd.ExecuteNonQuery(); 

推荐阅读