2015-07-23 4 views
0

Как я могу импортировать/вставить файл .DAT в базу данных, вызвав процедуру?Импорт .DAT-файла в базу данных?

Вот как будет выглядеть мой файл, и он должен войти в базу данных в этом формате.

50 4411902304 1 3 441192304 01/02/2013  

Будет ли процесс таким же для файла .DAT, как и для xml-файла?

Вот что у меня есть для XML

  SqlConnection myConnection = new SqlConnection("user id=name;" + 
            "password=password;server=servername;" + 
            "Trusted_Connection=yes;" + 
            "database=database; " + 
            "connection timeout=30"); 

     var conn = new SqlConnection(); 
     conn.ConnectionString = "user id=idName;" + 
            "password=password;" + "server=servername;" + "Trusted_Connection=yes;" + "database=databasename; " + "connection timeout=30"; 


     string filePath = "C:/TestData2.xml"; 
     string xml = File.ReadAllText(filePath); 
     using (SqlConnection con = new SqlConnection(conn.ConnectionString)) 
     { 
      using (SqlCommand cmd = new SqlCommand("procedureName")) 
      { 
       cmd.Connection = con; 
       cmd.CommandType = CommandType.StoredProcedure; 
       cmd.Parameters.AddWithValue("@x", xml); 
       con.Open(); 
       cmd.ExecuteNonQuery(); 
       con.Close(); 
       MessageBox.Show("done"); 
      } 
     } 

ответ

0

Что происходит, что XML является новой технологией, по сравнению со старым плоский файл (DAT). XML - это файл формата разметки, и есть функции, которые облегчают задачу импорта. Плоский файл старше, поэтому необходим другой подход.

Вы можете использовать программу массовой загрузки (bcp) для импорта файлов на SQL Server или параметры импорта SSIS.

Или, вы также можете использовать:

System.IO.StreamReader file = new System.IO.StreamReader(@"c:\data\TestData2.dat"); 
int counter = 0; 
while ((line = (file.ReadLine())) != null){...} 

и разбор каждой строки с помощью Split команды.

string[] fields= line.Split(' '); 

string a = fields[0]; string b = fields[1]; string c = fields[2];

, а затем выполнить команду, чтобы вставить каждую строку:

string sqlCommandtoInsert= "INSERT INTO [Table] (Tablefield1, Tablefield2, Tablefield3) VALUES (" + a + ", " + b + ", '" + c + "');"; 

cmd.CommandText = sqlCommandtoInsert;

cmd.ExecuteNonQuery();

Вставка каждой записи в таблицу.

Смежные вопросы