Экспорт .dat в Xml или читаемый файл с помощью .fmt - PullRequest
0 голосов
/ 16 февраля 2011

Я скачал базу данных с http://opendb.lightspeedsystems.com/contentupdate/database.htm это был zip-архив.Во всяком случае, мой вопрос, есть два файла: virussignatures.dat и virussignatures.fmt.Я слышал, что я должен извлечь базу данных в виде SQL с помощью BCP.Содержимое 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 или понятный текстовый файл.

Можно ли это сделать с помощью Vb.Net?Если так, то как?Во всяком случае, если нет, как это должно быть сделано?

1 Ответ

1 голос
/ 16 февраля 2011

Запишите, где находится база данных sqlserver (локальная или на сервере). Я предполагаю местный. Если у вас еще не установлен SqlServer, скачайте SqlExpress . Эта версия поставляется с необходимыми инструментами клиента .

Создайте базу данных, если у вас ее нет, я предполагаю, что она называется virussignatures.

Создать эту таблицу (запустить ее в окне запроса в вашей (новой) базе данных)

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

теперь вы готовы написать программу vb на основе этого примера на c # для чтения таблицы в DataSet и вызова WriteXml путем реализации следующего кода в программе VB.NET.

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();
...