0

http://opendb.lightspeedsystems.com/contentupdate/database.htmからデータベースをダウンロードしました。これは zip アーカイブでした。とにかく私の質問は、2 つのファイルがあるということです:virussignatures.datvirussignatures.fmt. BCP を使用してデータベースを SQL として抽出する必要があると聞きました。の内容virussignatures.fmtは次のとおりです。

8.0
11
1    SQLCHAR       2    64      "~~~~~"            1     VirusName  SQL_Latin1_General_CP1_CI_AS
2    SQLCHAR       2    32      "~~~~~"            2     VirusType           SQL_Latin1_General_CP1_CI_AS
3    SQLCHAR       2    32      "~~~~~"            3     AppSig              SQL_Latin1_General_CP1_CI_AS
4    SQLINT        0    4       "~~~~~"            4     SigStart            ""
5    SQLINT        0    4       "~~~~~"            5     SigEnd              ""
6    SQLCHAR       2    1024    "~~~~~"            6     Signature           SQL_Latin1_General_CP1_CI_AS
7    SQLBIT        1    1       "~~~~~"            7     Test                ""
8    SQLINT        0    4       "~~~~~"            8     CategoryNumber      ""
9    SQLINT        0    4       "~~~~~"            9     SourceNumber        ""
10   SQLDATETIME   0    8       "~~~~~"            10    TransactionTime     ""
11   SQLCHAR       2    50      ""                 11    KBID                SQL_Latin1_General_CP1_CI_AS

virussignatures.dat を XML またはわかりやすい TXT に変換したいと考えています。

これは Vb.Net を使用して行うことができますか? もしそうなら、どのように?とにかく、そうでない場合、これをどのように行うべきですか?

4

1 に答える 1

1

sqlserver db の場所 (ローカルまたはサーバー上) をメモします。ローカルを想定しています。SqlServer をまだインストールしていない場合は、SqlExpressをダウンロードしてください。そのバージョンには、必要なクライアント ツールが付属しています。

データベースがない場合は、データベースを作成します。ウイルス署名と呼ばれるものだと思います。

このテーブルを作成します ((新しい) データベースのクエリ ウィンドウで実行します)。

CREATE TABLE [dbo].[Virusses](
  VirusName nvarchar(64) NULL,
  VirusType nvarchar(32) NULL,
  AppSig nvarchar(32) NULL,
  SigStart int NULL,
  SigEnd int NULL,
  Signature nvarchar(1024) null,
  Test bit null,
  CategoryNumber int null,
  SourceNumber int null,
  TransactionTime Datetime null,
  KBID nvarchar(50)
);
GO

ローカル SQL データベースにデータをインポートする

bcp virussignatures.dbo.Virusses in virussignatures.dat -f virussignatures.fmt -T -S .

読む: http://msdn.microsoft.com/en-us/library/ms162802.aspx

または、新しいクエリから (SQL Management Studio でデータベースを右クリック)

BULK INSERT 
    Virusses 
      FROM 'c:\where\ever\your\file\is\virussignatures.dat' 
      WITH 
        ( FORMATFILE = 'c:\where\ever\your\file\is\virussignatures.fmt' );
GO

これで、この c# の例に基づいて VB プログラムを作成し、VB.NET プログラムに次のコードを実装して、DataSet のテーブルを読み取り、WriteXml を呼び出す準備が整いました。

SqlCommand command = new SqlCommand();
command.CommandText = "SELECT * FROM Virussignature";
command.CommandType = CommandType.Text;
command.Connection = new SqlConnection("Your conect string here");
SqlDataAdapter da = new SqlDataAdapter(command); 
DataSet ds = new DataSet();
da.Fill(ds, "Virussignature");
StreamWriter xmlDoc = new StreamWriter("virus.xml"); 
ds.WriteXml(xmlDoc);
xmlDoc.Close();
于 2011-02-15T22:19:16.513 に答える