1

Foxproテーブルがいくつかあり、そのうちの1つにBlobフィールドが含まれています。Blob(MapPointファイル)に格納されているデータ型は知っていますが、FoxProを持っていないため(簡単に取得できないため)、データ型を抽出する方法がわかりません。

.DBFファイルと.FPTファイルを取得して、その中に保存されているMapPointファイルを抽出する方法はありますか?

4

3 に答える 3

1

C# と ADO.NET を使用して、データをファイルに抽出できます。サンプルコードは次のとおりです。

using System;
using System.Data;
using System.Data.OleDb;
using System.IO;

namespace SaveFoxProMemoFieldAsFile
{
    class Program
    {
        static void Main(string[] args)
        {
            string connectionString = @"Provider=VFPOLEDB.1;Data Source=C:\data\;Collating Sequence=MACHINE;Null=Yes";

            string sqlSelect = "SELECT filedata FROM filelist";
            int fileNumber = 1;
            using (OleDbConnection connection = new OleDbConnection(connectionString))
            {
                using(OleDbCommand command = connection.CreateCommand())
                {
                    command.CommandText = sqlSelect;
                    command.CommandType = CommandType.Text;

                    try
                    {
                        connection.Open();
                        using(OleDbDataReader reader = command.ExecuteReader(CommandBehavior.CloseConnection))
                        {
                            if(reader.HasRows)
                            {
                                while(reader.Read())
                                {
                                    byte[] binaryData = (byte[])reader["filedata"];

                                    FileStream fs = new FileStream(string.Format(@"C:\data\file_{0}.pdf", fileNumber++), FileMode.OpenOrCreate, FileAccess.Write);
                                    fs.Write(binaryData, 0, binaryData.Length);
                                    fs.Close();
                                }
                            }
                        }
                    }
                    catch
                    {
                        throw;
                    }
                }
            }

            Console.WriteLine("Program execution complete");
            Console.WriteLine("Press any key to end");
            Console.ReadKey();
        }
    }
}

FoxPro ドライバーが必要な場合は、Microsoft OLE DB Provider for Visual FoxPro 9.0 にアクセスしてください。

于 2011-11-24T21:33:56.973 に答える
0

FoxPro のメモ フィールドと思われる場所に保存されていた PDF ファイルをいくつか取り出す必要がありました。スキーマは、フィールドを としてリストしましたLONGVARCHAR

提供されたソース コードを使用できましたが、SQL を変更する必要がありました。そうしないと、キャスト エラーが発生しました。

PDF ファイルを文字列として取り出したNULL \0場合、BLOB 内の値に遭遇するたびに切り捨てられます。

使用したSQLは次のとおりです。

string sqlSelect = "SELECT cast(inc_rawdata as Blob) as inc_rawdata, inc_filename  FROM F2_522_SYS_MAP_FILES";
于 2017-09-11T17:24:29.793 に答える