°­ÁÂ¿Í ÆÁ

´å³Ý : SqlBulkCopy¸¦ ÀÌ¿ëÇÑ ¼­¹ö°£ÀÇ µ¥ÀÌÅÍ º¹»ç ³¯Â¥:2020-4-1 11:04:56 Á¶È¸¼ö:15423
ÀÛ¼ºÀÚ : ¼Ò¿£
Æ÷ÀÎÆ® : 1766
°¡ÀÔÀÏ : 2020-02-02 00:09:14
¹æ¹®È½¼ö : 142
±Û 222°³, ´ñ±Û 65°³
¼Ò°³ : SoEn ¿î¿µÀÚÀÔ´Ï´Ù.
ÀÛ¼º±Û º¸±â
ÂÊÁö º¸³»±â
ÀÌ Å¬·¡½º´Â ¼­¹ö°£¿¡ ´ë·®À¸·Î µ¥ÀÌÅ͸¦ º¹»çÇÒ ¶§ »ç¿ëÇÑ´Ù. SQL ¼­¹ö¿¡ Æ÷ÇԵǾî ÀÖ´Â bcp ¹úÅ© ¸í·É°ú À¯»çÇÑ µ¿ÀÛÀ» ¼öÇàÇÑ´Ù. º¹»ç¸¦ ¹Þ´Â ÂÊÀº SQL ¼­¹ö¿©¾ß ÇÏÁö¸¸ ÁÖ´Â ÂÊÀº ¿À¶óŬÀ̳ª MariaDB µîÀÇ ´Ù¸¥ DBMS¿©µµ »ó°ü ¾ø´Ù. ADO¸¦ ÅëÇØ µ¥ÀÌÅ͸¦ ÀÐÀ» ¼ö¸¸ ÀÖÀ¸¸é ¾î¶² DBMS¿¡¼­³ª µ¥ÀÌÅ͸¦ °¡Á®¿Ã ¼ö ÀÖ´Ù.
³»ºÎÀûÀÎ µ¿ÀÛ ¹æ¹ýÀº ´ë´ÜÈ÷ º¹ÀâÇϰÚÁö¸¸ »ç¿ëÇÏ´Â ¹æ¹ýÀº °£´ÜÇÏ´Ù. ÀýÂ÷´ë·Î¸¸ Äڵ带 ÀÛ¼ºÇÏ¸é µÈ´Ù. »ý¼ºÀÚ·Î ÀÌ¹Ì ¿­·ÁÁø ¿¬°á °´Ã¼¸¦ Àü´ÞÇϰųª ¾Æ´Ï¸é ¿¬°á ¹®ÀÚ¿­À» Àü´ÞÇÑ´Ù. ¿É¼Ç°ú Æ®·£Àè¼Ç °´Ã¼µµ Àü´ÞÇÒ ¼ö ÀÖ´Ù.
 
SqlBulkCopy (SqlConnection connection);
SqlBulkCopy (string connectionString, [SqlBulkCopyOptions copyOptions]);
SqlBulkCopy(SqlConnection connection, SqlBulkCopyOptions copyOptions, SqlTransaction externalTransaction);
 
»ý¼ºÀÚ·Î Àü´ÞÇÏ´Â ¿¬°áÀº Ãâ·Â¿ëÀ̸ç ÀÌ ¿¬°á·Î µ¥ÀÌÅ͸¦ ³» º¸³½´Ù. ÁÖ¿ä ¼Ó¼ºÀº ´ÙÀ½°ú °°´Ù.
 
ÇÁ·ÎÆÛƼ ŸÀÔ ¼³¸í
DestinationTableName string ¸ñÀûÁöÀÇ Å×À̺í À̸§ÀÌ´Ù. µðÆúÆ®´Â nullÀ̸ç ÀÌ °ªÀÌ ¾øÀ¸¸é ¿¹¿Ü°¡ ¹ß»ýÇϹǷΠ¹Ýµå½Ã ÁöÁ¤ÇØ¾ß ÇÑ´Ù.
BatchSize int Çѹø¿¡ º¹»çÇÒ ·¹ÄÚµå °³¼ö¸¦ ÁöÁ¤ÇÑ´Ù. µðÆúÆ®´Â 0ÀÌ¸ç ¸ðµç ·¹Äڵ带 Àϰý º¹»çÇÑ´Ù.
BulkCopyTimeout int Á¦ÇÑ ½Ã°£À» ÁöÁ¤ÇÑ´Ù. µðÆúÆ®´Â 30ÃÊÀ̸ç 0À¸·Î ÁöÁ¤Çϸé Á¦ÇÑ ½Ã°£À» µÎÁö ¾Ê´Â´Ù. Á¦ÇÑ ½Ã°£ ³»·Î ó¸®ÇÏÁö ¾ÊÀ¸¸é Æ®·£Àè¼ÇÀÌ ·Ñ¹éµÈ´Ù.
ColumnMappings SqlBulkCopyColumn
MappingCollection
¿­ ¸ÊÇÎÀ» ÁöÁ¤ÇÑ´Ù. µðÆúÆ®´Â ºó Ä÷º¼ÇÀÌ´Ù. ¿øº»°ú ´ë»óÀÇ Å×ÀÌºí ±¸Á¶°¡ °°´Ù¸é ¸ÊÇÎÇÒ ÇÊ¿ä ¾ø´Ù. ¿­ÀÇ °³¼ö³ª ¼ø¼­°¡ ´Ù¸£¸é º¹»çÇÒ ¿­À» ¸ÊÇÎÇÑ´Ù.
EnableStreaming bool ½ºÆ®¸®¹Ö ¿©ºÎ¸¦ ÁöÁ¤ÇÑ´Ù. µðÆúÆ®´Â falseÀÌ´Ù. true·Î º¯°æÇÏ¸é ¸Þ¸ð¸® »ç¿ë·®ÀÌ ÁÙ¾îµç´Ù.
     
NotifyAfter int ÀÌ ¼Ó¼º¸¸Å­ÀÇ ·¹Äڵ带 º¹»çÇÑ ÈÄ ¾Ë¸² À̺¥Æ®¸¦ »ý¼ºÇÑ´Ù. µðÆúÆ®´Â 0ÀÌ´Ù.


DestinationTableName  ¼Ó¼ºÀº ¹Ýµå½Ã ÁöÁ¤ÇØ¾ß ÇÏ¸ç ¶ÇÇÑ ÀÌ Å×À̺íÀº ¹Ì¸® »ý¼ºµÇ¾î ÀÖ¾î¾ß ÇÑ´Ù. ¸ñÀûÁöÀÇ ¿¬°á°ú Å×À̺í¸íÀ» ¼³Á¤ÇÑ ÈÄ ´ÙÀ½ ¸Þ¼­µå·Î º¹»ç¸¦ ¼öÇàÇÑ´Ù.
 
WriteToServer(IDataReader)        
WriteToServer(DataTable)
WriteToServer(DataRow[])
 
Àμö´Â º¹»çÇÒ ¿øº»ÀÌ´Ù. ¸®´õ, Å×ÀÌºí ¶Ç´Â Çà ¹è¿­À» Àü´ÞÇϸé ÁöÁ¤ÇÑ ¼­¹ö·Î ·¹Äڵ带 º¹»çÇÑ´Ù. ´ë·« º¹»ç¸¦ Çϱâ Àü¿¡ ¿øº» ¿¬°áÀ» ¹Ì¸® ¿­¾î ³õ°í Å×À̺íÀ» ÁغñÇØ µÎ¾î¾ß ÇÑ´Ù. ºñµ¿±âÀûÀ¸·Î º¹»çÇÒ ¶§´Â WriteToServerAsync ¸Þ¼­µå¸¦ »ç¿ëÇÑ´Ù.
´ÙÀ½ ¿¹Á¦´Â tblPeople Å×À̺íÀ» tblPeople2 Å×À̺í·Î º¹»çÇÑ´Ù. ¿øº» µ¥ÀÌÅͺ£À̽º¿¡ tblPeople Å×À̺íÀÌ ÀÖ¾î¾ß ÇÏ¸ç ¸ñÀûÁö¿¡µµ tblPeople2 Å×À̺íÀÌ Á¸ÀçÇØ¾ß ÇÑ´Ù. ¼­¹ö°¡ ´Ù¸£´Ù¸é Å×À̺í À̸§Àº °°¾Æµµ »ó°ü ¾ø´Ù.
 
using System;
using System.Data.SqlClient;
 
class CSTest {
      static void Main()
      {
             String constr = "Server=(local);database=ADOTest;Integrated Security=true";
            SqlConnection Src = new SqlConnection(constr);
             Src.Open();
             SqlCommand Com = new SqlCommand("SELECT * FROM tblPeople", Src);
             SqlDataReader R = Com.ExecuteReader();
 
             SqlBulkCopy bulkCopy = new SqlBulkCopy(constr);
             bulkCopy.DestinationTableName = "tblPeople2";
             bulkCopy.WriteToServer(R);
 
             R.Close();
             bulkCopy.Close();
      }
}

¿øº» ¿¬°áÀ» ¿­°í ¸ðµç ·¹Äڵ带 ´Ù Àоî¿À´Â ¸í·ÉÀ» ½ÇÇàÇÏ¿© ¸®´õ °´Ã¼¸¦ »ý¼ºÇØ µÎ¾ú´Ù. ÀÌ ¸®´õ°¡ º¹»çÇÒ ¿øº» µ¥ÀÌÅÍÀ̸ç ÀÌÈÄ ÀÌ ¸®´õ¸¦ ÅëÇØ ¿øº» Å×À̺íÀÇ ·¹Äڵ带 ´ë·«À¸·Î ÀÐ¾î µéÀδÙ.
°°Àº ¼­¹ö¿¡ ´ëÇØ bulkCopy °´Ã¼¸¦ »ý¼ºÇϰí tblePeople2 Å×À̺íÀ» ¸ñÀûÁö·Î ¼³Á¤ÇÑ ÈÄ ¸®´õ °´Ã¼¸¦ Àμö·Î Àü´ÞÇÏ¿© WriteToServer ¸Þ¼­µå¸¦ È£ÃâÇÑ´Ù. ³»ºÎ¿¡¼­ ¸®´õ¸¦ ÅëÇØ ÀÐÀº ·¹Äڵ带 ¸ñÀûÁö Å×ÀÌºí¿¡ Çϳª¾¿ »ðÀÔÇÑ´Ù.
¿¹Á¦ ½ÇÇàÀ» À§ÇØ µÎ °³ÀÇ ¼­¹ö¸¦ ÁغñÇÒ ¼ö ¾ø¾î ÆíÀÇ»ó °°Àº ¼­¹ö¿¡¼­ º¹»çÇߴµ¥ ÀÌ·± ¿ëµµ¶ó¸é »ç½Ç INSERT SELECT Äõ¸®¹®ÀÌ ÈξÀ ´õ °£ÆíÇÏ´Ù. µû¶ó¼­ SqlBulkCopy Ŭ·¡½º¸¦ °°Àº ¼­¹ö ³»¿¡¼­ ¾µ ÀÌÀ¯´Â ¾øÀ¸¸ç ÁÖ·Î ¼­¹ö°£ÀÇ µ¥ÀÌÅÍ º¹»ç¿¡ »ç¿ëÇÑ´Ù.
SqlBulkCopyOptions´Â ´ë·® º¹»ç ¿É¼ÇÀ» ÁöÁ¤ÇÑ´Ù. ¿­°ÅÇüÀÌµÇ ºñÆ® Ç÷¡±×·Î Á¤ÀǵǾî ÀÖ¾î ¿©·¯ °³ÀÇ ¿É¼ÇÀ» ÇÔ²² ÁöÁ¤ÇÒ ¼ö ÀÖ´Ù.
¿É¼Ç °ª ¼³¸í
Default 0 ¾Æ¹« ¿É¼Çµµ ÁöÁ¤ÇÏÁö ¾Ê´Â´Ù.
KeepIdentity 1 ¿øº» ID°ªÀ» À¯ÁöÇÑ´Ù. ÁöÁ¤ÇÏÁö ¾ÊÀ¸¸é ¸ñÀûÁöÀÇ ID¸¦ »ç¿ëÇÑ´Ù.
CheckConstraints 2 º¹»ç½Ã Á¦¾àÀ» È®ÀÎÇÑ´Ù.
TableLock 4 º¹»çÁß¿¡ ´ë·® ¾÷µ¥ÀÌÆ® ¶ôÀ» °Ç´Ù. ÁöÁ¤ÇÏÁö ¾ÊÀ¸¸é Çà Àá±ÝÀ» »ç¿ëÇÑ´Ù.
KeepNulls 8 ¸ñÀû Å×À̺íÀÇ NULL°ªÀ» À¯ÁöÇÑ´Ù. ÁöÁ¤ÇÏÁö ¾ÊÀ¸¸é NULL ´ë½Å ±âº»°ªÀ» »ç¿ëÇÑ´Ù.
FireTriggers 16 »ðÀÔÇÏ´Â Çà¿¡ ´ëÇØ Æ®¸®°Å¸¦ ¹ß»ý½ÃŲ´Ù.
UseInternalTransaction 32 º¹»ç ÀÛ¾÷À» ³»ºÎÀûÀÎ Æ®·£Àè¼Ç¿¡¼­ ½ÇÇàÇÑ´Ù. ¿ÜºÎ Æ®·£Àè¼Ç°ú ÇÔ²² »ç¿ëÇØ¼­´Â ¾ÈµÈ´Ù.
AllowEncryptedValueModifications 64 ¾ÏȣȭµÈ µ¥ÀÌÅ͸¦ ÇØµ¶ÇÏÁö ¾Ê°í º¹»çÇÑ´Ù. ¾çÂÊ ¼­¹öÀÇ ¾Ïȣȭ ¹æ½ÄÀÌ ´Ù¸£¸é º¹»çÇÑ µ¥ÀÌÅ͸¦ ¾µ ¼ö ¾ø´Ù.
µðÆúÆ® ¿É¼ÇÀº Á¦¾àÀ̳ª ±âº»°ª, Æ®¸®°Å µîÀ» ¸ðµÎ ¹«½ÃÇϵµ·Ï µÇ¾î ÀÖ¾î °¡±ÞÀû ºü¸¥ ¼Óµµ·Î º¹»çÇÏ´Â °ÍÀ¸·Î µÇ¾î ÀÖ´Ù. ¼Óµµ¸¦ Èñ»ýÇÏ´õ¶óµµ ²À ÇÊ¿äÇÑ ¿É¼ÇÀÌ ÀÖÀ¸¸é ¿øÇÏ´Â ¿É¼ÇÀ» ÄÒ ÈÄ »ç¿ëÇÑ´Ù.
 



°³¹ßÀÚÀÇ Ãµ±¹ SoEn

¸ñ·Ïº¸±â »èÁ¦ ¼öÁ¤ ½Å°í ½ºÅ©·¦


·Î±×ÀÎÇÏ¼Å¾ß ´ñ±ÛÀ» ´Þ ¼ö ÀÖ½À´Ï´Ù.