ºìÁªLinuxÃÅ»§
Linux°ïÖú

SQL ServerÊý¾Ýµ¼Èëµ¼³ö¼¼Êõ¸ÅÊöÓë±È½Ï

·¢²¼Ê±¼ä:2006-10-15 00:35:58À´Ô´:ºìÁª×÷Õß:williamEXE
µ±ÎÒÃǽ¨Á¢Ò»¸öÊý¾Ý¿âʱ£¬²¢ÇÒÏ뽫·ÖÉ¢ÔÚ¸÷´¦µÄ²»Í¬ÀàÐ͵ÄÊý¾Ý¿â·ÖÀà»ã×ÜÔÚÕâ¸öн¨µÄÊý¾Ý¿âÖÐʱ£¬ÓÈÆäÊÇÔÚ½øÐÐÊý¾Ý¼ìÑé¡¢¾»»¯ºÍת»»Ê±£¬½«»áÃæÁٺܴóµÄÌôÕ½¡£ÐÒºÃSQL ServerΪÎÒÃÇÌṩÁËÇ¿´ó¡¢·á¸»µÄÊý¾Ýµ¼Èëµ¼³ö¹¦ÄÜ£¬²¢ÇÒÔÚµ¼Èëµ¼³öµÄͬʱ¿ÉÒÔ¶ÔÊý¾Ý½øÐÐÁé»îµÄ´¦Àí¡£

ÔÚSQL ServerÖÐÖ÷ÒªÓÐÈýÖÖ·½Ê½µ¼Èëµ¼³öÊý¾Ý£ºÊ¹ÓÃTransact-SQL¶ÔÊý¾Ý½øÐд¦Àí£»µ÷ÓÃÃüÁîÐй¤¾ßbcp´¦ÀíÊý¾Ý£»Ê¹ÓÃÊý¾Ýת»»·þÎñ(DTS)¶ÔÊý¾Ý½øÐд¦Àí¡£ÕâÈýÖÖ·½·¨¸÷ÓÐÆäÌص㣬ÏÂÃæ¾ÍËüÃǵÄÖ÷ÒªÌصã½øÐбȽϡ£

Ò»¡¢Ê¹Ó÷½Ê½µÄ±È½Ï

1. ʹÓÃTransact-SQL½øÐÐÊý¾Ýµ¼Èëµ¼³ö

ÎÒÃǺÜÈÝÒ׿´³ö£¬Transact-SQL·½·¨¾ÍÊÇͨ¹ýSQLÓï¾ä·½Ê½½«Ïàͬ»ò²»Í¬ÀàÐ͵ÄÊý¾Ý¿âÖеÄÊý¾Ý»¥ÏർÈëµ¼³ö»òÕ߻㼯ÔÚÒ»´¦µÄ·½·¨¡£Èç¹ûÊÇÔÚ²»Í¬µÄSQL ServerÊý¾Ý¿âÖ®¼ä½øÐÐÊý¾Ýµ¼Èëµ¼³ö£¬Äǽ«ÊǷdz£ÈÝÒ××öµ½µÄ¡£Ò»°ã¿ÉʹÓÃSELECT INTO FROMºÍINSERT INTO¡£Ê¹Óà SELECT INTO FROMʱINTOºó¸úµÄ±í±ØÐë´æÔÚ£¬Ò²¾ÍÊÇ˵ËüµÄ¹¦ÄÜÊÇÔÚµ¼Êý¾Ý֮ǰÏȽ¨Á¢Ò»¸ö¿Õ±í£¬È»ºóÔÙ½«Ô´±íÖеÄÊý¾Ýµ¼È뵽н¨µÄ¿Õ±íÖУ¬Õâ¾ÍÏ൱ÓÚ±íµÄ¸´ÖÆ£¨²¢²»»á¸´ÖƱíµÄË÷ÒýµÈÐÅÏ¢£©¡£¶øINSERT INTOµÄ¹¦ÄÜÊǽ«Ô´Êý¾Ý²åÈëµ½ÒѾ­´æÔڵıíÖУ¬¿ÉÒÔʹÓÃËü½øÐÐÊý¾ÝºÏ²¢£¬Èç¹ûÒª¸üÐÂÒѾ­´æÔڵļǼ£¬¿ÉÒÔʹÓÃUPDATE¡£

[code]SELECT * INTO table2 FROM table1 --table1ºÍtable2µÄ±í½á¹¹Ïàͬ
INSERT INTO table2 SELECT * FROM table3 --table2ºÍtable3µÄ±í½á¹¹Ïàͬ[/code]

µ±ÔÚÒì¹¹Êý¾Ý¿âÖ®¼äµÄ½øÐÐÊý¾Ýµ¼Èëµ¼³öʱ£¬Çé¿ö»á±äµÃ¸´ÔӵöࡣÊ×ÏÈÒª½â¾öµÄÊÇÈçºÎ´ò¿ª·ÇSQL ServerÊý¾Ý¿âµÄÎÊÌâ¡£

ÔÚSQL ServerÖÐÌṩÁËÁ½¸öº¯Êý¿ÉÒÔ¸ù¾Ý¸÷ÖÖÀàÐÍÊý¾Ý¿âµÄOLE DB Provider´ò¿ª²¢²Ù×÷ÕâЩÊý¾Ý¿â£¬ÕâÁ½¸öº¯ÊýÊÇOPENDATASOURCEºÍOPENROWSET¡£ËüÃǵŦÄÜ»ù±¾ÉÏÏàͬ£¬²»Í¬Ö®´¦Ö÷ÒªÓÐÁ½µã¡£

(1) µ÷Ó÷½Ê½²»Í¬¡£

OPENDATASOURCEµÄ²ÎÊýÓÐÁ½¸ö£¬·Ö±ðÊÇOLE DB ProviderºÍÁ¬½Ó×Ö·û´®¡£Ê¹ÓÃOPENDATASOURCEÖ»Ï൱ÓÚÒýÓÃÊý¾Ý¿â»òÕßÊÇ·þÎñ£¨¶ÔÓÚSQL Server¡¢OracleµÈÊý¾Ý¿âÀ´Ëµ£©¡£ÒªÏëÒýÓÃÆäÖеÄÊý¾Ý±í»òÊÓͼ£¬±ØÐëÔÚOPENDATASOURCE(...)ºó½øÐÐÒýÓá£

ÔÚSQL ServerÖÐͨ¹ýOPENDATASOURCE²éѯAccessÊý¾Ý¿âabc.mdbÖеÄtable1±í

[code]SELECT * FROM OPENDATASOURCE('Microsoft.Jet.OLEDB.4.0',
'Provider=Microsoft.Jet.OLEDB.4.0;Data Source=abc.mdb;Persist Security
Info=False')...
table1[/code]

OPENROWSETÏ൱ÓÚÒ»¸ö¼Ç¼¼¯£¬¿ÉÒÔ½«Ö±½Óµ±³ÉÒ»¸ö±í»òÊÓͼʹÓá£

ÔÚSQL ServerÖÐͨ¹ýOPENROWSETE²éѯAccessÊý¾Ý¿âabc.mdbÖеÄtable1±í

[code]SELECT * FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0', 'abc.mdb';
'admin';'','SELECT * FROM table1')[/code]

(2) Áé»î¶È²»Í¬¡£

OPENDATASOURCEÖ»ÄÜ´ò¿ªÏàÓ¦Êý¾Ý¿âÖеıí»òÊÓͼ£¬Èç¹ûÐèÒª¹ýÂ˵Ļ°£¬Ö»ÄÜÔÚSQL ServerÖнøÐд¦Àí¡£¶øOPENROWSET¿ÉÒÔÔÚ´ò¿ªÊý¾Ý¿âµÄͬʱ¶ÔÆä½øÐйýÂË£¬ÈçÉÏÃæµÄÀý×Ó£¬ÔÚOPENROWSETÖпÉÒÔʹÓÃSELECT * FROM table1¶Ôabc.mdbÖеÄÊý¾Ý±í½øÐвéѯ£¬¶øOPENDATASOURCEÖ»ÄÜÒýÓÃtable1£¬¶øÎÞ·¨²éѯtable1¡£Òò´Ë£¬OPENROWSET±È½ÏOPENDATASOURCE¸ü¼ÓÁé»î¡£

2. ʹÓÃÃüÁîÐÐbcpµ¼Èëµ¼³öÊý¾Ý

ºÜ¶à´óÐ͵Äϵͳ²»½ö½öÌṩÁËÓѺõÄͼÐÎÓû§½Ó¿Ú£¬Í¬Ê±Ò²ÌṩÁËÃüÁîÐз½Ê½¶Ôϵͳ½øÐпØÖÆ¡£ÔÚSQL ServerÖгýÁË¿ÉÒÔʹÓÃSQLÓï¾ä¶ÔÊý¾Ý½øÐвÙ×÷Í⣬»¹¿ÉÒÔʹÓÃÒ»¸öÃüÁîÐй¤¾ßbcp¶ÔÊý¾Ý½øÐÐͬÑùµÄ²Ù×÷¡£

bcpÊÇ»ùÓÚDB-Library ¿Í»§¶Ë¿âµÄ¹¤¾ß¡£ËüµÄ¹¦ÄÜÊ®·ÖÇ¿´ó£¬bcpÄܹ»ÒÔ²¢Ðз½Ê½½«Êý¾Ý´Ó¶à¸ö¿Í»§¶Ë´óÈÝÁ¿¸´ÖƵ½µ¥¸ö±íÖУ¬´Ó¶ø´ó´óÌá¸ßÁË×°ÔØЧÂÊ¡£µ«ÔÚÖ´Ðв¢ÐвÙ×÷ʱҪעÒâµÄÊÇÖ»ÓÐʹÓûùÓÚ ODBC »ò SQL OLE DB µÄ API µÄÓ¦ÓóÌÐò²Å¿ÉÒÔÖ´Ðн«Êý¾Ý²¢ÐÐ×°Ôص½µ¥¸ö±íÖеIJÙ×÷¡£

bcp¿ÉÒÔ½«SQL ServerÖеÄÊý¾Ýµ¼³öµ½ÈκÎOLE DBËùÖ§³ÖµÄÊý¾Ý¿âµÄ£¬ÈçÏÂÃæµÄÓï¾äÊǽ«authors±íµ¼³öµ½excelÎļþÖÐ

[code]bcp pubs.dbo.authors out c:\temp1.xls -c -q -S"GNETDATA/GNETDATA" -U"sa" -P"password"[/code]

bcp²»½öÄܹ»Í¨¹ýÃüÁîÐÐÖ´ÐУ¬Í¬Ê±Ò²¿ÉÒÔͨ¹ýSQLÖ´ÐУ¬ÕâÐèÒªÒ»¸öϵͳ´æ´¢¹ý³Ìxp_cmdshellÀ´ÊµÏÖ£¬ÈçÉÏÃæµÄÃüÁî¿É¸ÄдΪÈçÏÂÐÎʽ¡£

[code]EXEC master..xp_cmdshell 'bcp pubs.dbo.authors out
c:\temp1.xls -c -q -S"GNETDATA/GNETDATA" -U"sa" -P"password"'[/code]

3. ʹÓÃÊý¾Ýת»»·þÎñ(DTS)µ¼Èëµ¼³öÊý¾Ý

DTSÊÇSQL ServerÖе¼Èëµ¼³öÊý¾ÝµÄºËÐÄ£¬Ëü³ýÓоßÓÐSQLºÍÃüÁîÐй¤¾ßbcpÏàÓ¦µÄ¹¦ÄÜÍ⣬»¹¿ÉÒÔÁé»îµØͨ¹ýVBScript¡¢JScriptµÈ½Å±¾ÓïÑÔ¶ÔÊý¾Ý½øÐмìÑé¡¢¾»»¯ºÍת»»¡£

SQL ServerΪDTSÌṩÁËͼÐÎÓû§½Ó¿Ú£¬Óû§¿ÉÒÔʹÓÃͼÐνçÃæµ¼Èëµ¼³öÊý¾Ý£¬²¢¶ÔÊý¾Ý½øÐÐÏàÓ¦µÄ´¦Àí¡£Í¬Ê±£¬DTS»¹ÒÔcom×é¼þµÄÐÎʽÌṩ±à³Ì½Ó¿Ú£¬Ò²¾ÍÊÇ˵ÈκÎÖ§³Öcom×é¼þµÄ¿ª·¢¹¤¾ß¶¼¿ÉÒÔÀûÓÃcom×é¼þʹÓÃDTSËùÌṩµÄ¹¦ÄÜ¡£DTSÔÚSQL ServerÖпÉÒÔ±£´æΪ²»Í¬µÄÐÎʽ£¬¿ÉÒÔÊÇ°üµÄÐÎʽ£¬Ò²¿ÉÒÔ±£´æ³ÉVisual BasicÔ´³ÌÐòÎļþ£¬ÕâÑùÖ»ÒªÔÚVBÖбàÒë±ã¿ÉÒÔʹÓÃDTS com×é¼þÁË¡£

DTSºÍÆäËüÊý¾Ýµ¼Èëµ¼³ö·½Ê½×î´óµÄ²»Í¬¾ÍÊÇËü¿ÉÒÔÔÚ´¦ÀíÊý¾ÝµÄ¹ý³ÌÖжÔÿһÐÐÊý¾Ý½øÐÐÉî¶È´¦Àí¡£ÒÔÏÂÊÇÒ»¶ÎVBScript´úÂ룬Õâ¶Î´úÂëÔÚ´¦DTSÀíÿһÌõ¼Ç¼ʱִÐУ¬DTSDestination±íʾĿ±ê¼Ç¼£¬DTSSource±íʾԴ¼Ç¼£¬ÔÚ´¦Àí¡°»éÒö×´¿ö¡±Ê±£¬½«Ô´¼Ç¼Öеġ°»éÒö×´¿ö¡±ÖеÄ0»ò1ת»»³ÉÄ¿±ê¼Ç¼ÖС°Òѻ顱»ò¡°Î´»é¡±¡£

[code]Function Main()
DTSDestination("ÐÕÃû") = DTSSource("ÐÕÃû")
DTSDestination("ÄêÁä") = DTSSource("ÄêÁä")
If DTSDestination("»éÒö×´¿ö") = 1 Then
DTSDestination("»éÒö×´¿ö") = "ÒÑ»é"
Else
DTSDestination("»éÒö×´¿ö") = "δ»é"
End If
Main = DTSTransformStat_OK
End Function[/code]

ÉÏÊöµÄÈýÖÖÊý¾Ýµ¼Èëµ¼³ö·½·¨¸÷ÓÐÆäÀû±×£¬ËüÃÇÖ®¼äµÄÏ໥±È½ÏÈçͼ1Èçʾ¡£

¶þ¡¢ÐÔÄܵıȽÏ

ʹÓÃTransact-SQL·½Ê½¡£Èç¹ûÊÇSQL ServerÊý¾Ý¿âÖ®¼äµÄµ¼Èëµ¼³ö£¬ËٶȽ«·Ç³£¿ì£¬µ«ÊÇʹÓÃOPENDATASOURCEºÍOPENROWSET·½·¨ÀûÓÃOLE DB Provider´ò¿ª²¢²Ù×÷Êý¾Ý¿âʱËٶȻáÂýһЩ¡£

ʹÓÃbcpÃüÁʽ¡£Èç¹û²»ÐèÒª¶ÔÊý¾Ý½øÐÐÑéÖ¤µÈ²Ù×÷µÄ»°£¬Ê¹ÓÃËü»¹ÊǷdz£¿ìµÄ£¬ÕâÊÇÒòΪËüµÄÄÚ²¿Ê¹ÓÃc½Ó¿ÚµÄDB-library£¬ËùÒÔÔÚ²Ù×÷Êý¾Ý¿âʱËÙ¶ÈÓкܴóµÄÌáÉý¡£

ʹÓÃDTS·½Ê½µ¼Êý¾ÝÓ¦¸ÃÊÇ×îºÃµÄ·½Ê½ÁË¡£ÓÉÓÚËüÕûºÏÁËMicrosoft Universal Data Access¼¼ÊõÓëMicrosoft ActiveX¼¼Êõ£¬Òò´Ë²»½ö¿ÉÒÔÁé»îµØ´¦ÀíÊý¾Ý£¬¶øÇÒÔÚÊý¾Ýµ¼Èëµ¼³öµÄЧÂÊÊǷdz£¸ßµÄ¡£

×ܽá

SQL ServerÌṩÁ˷ḻµÄÊý¾Ýµ¼Èëµ¼³ö·½·¨£¬Õâ¸øÎÒÃÇÌṩÁ˸ü¶àµÄÑ¡Ôñ£¬µ«ÊÇÕâÓÖ»á¸øÎÒÃÇ´øÀ´Ò»¸öÐÂÎÊÌ⣺ÈçºÎ¸ù¾Ý¾ßÌåÇé¿öÑ¡ÔñºÏÊʵÄÊý¾Ýµ¼Èëµ¼³ö·½·¨ÄØ£¿ÎÒÔÚÕâÀïÌṩһЩ¸öÈ˵Ľ¨Ò飬ϣÍûÄܶԶÁÕßÆðµ½Ò»¶¨µÄÖ¸µ¼×÷Óá£

Èç¹ûÊÇÔÚSQL ServerÊý¾Ý¿âÖ®¼ä½øÐÐÊý¾Ýµ¼Èëµ¼³öʱ£¬²¢ÇÒ²»ÐèÒª¶ÔÊý¾Ý½øÐи´ÔӵļìÑ飬×îºÃʹÓÃTransact-SQL·½·¨½øÐд¦Àí£¬ÒòΪÔÚSQL ServerÊý¾Ý¿âÖ®¼ä½øÐÐÊý¾Ý²Ù×÷ʱ,SQLÊǷdz£¿ìµÄ¡£µ±È»£¬Èç¹ûÒª½øÐи´ÔӵIJÙ×÷£¬ÈçÊý¾Ý¼ìÑ顢ת»»µÈ²Ù×÷ʱ£¬×îºÃ»¹ÊÇʹÓÃDTS½øÐд¦Àí£¬ÒòΪDTS²»¹âµ¼Êý¾ÝЧÂʸߣ¬¶øÇÒÄܹ»¶ÔÊý¾Ý½øÐÐÉî¶È¿ØÖÆ¡£µ«ÊÇDTSµÄ±à³Ì½Ó¿ÚÊÇ»ùÓÚcomµÄ£¬²¢ÇÒÕâ¸ö½Ó¿ÚÊ®·Ö¸´ÔÓ£¬Òò´Ë£¬Ê¹ÓóÌÐòµ÷ÓÃDTS½«±äÒ²»á±äµÃºÜ¸´ÔÓ£¬Òò´Ë, µ±Êý¾ÝÁ¿²»ÊǺܴ󣬲¢ÇÒÏ뽫Êý¾Ýµ¼Èëµ¼³ö¹¦ÄܼÓÈëµ½³ÌÐòÖУ¬¶øÇÒûÓи´ÔÓµÄÊý¾Ý´¦Àí¹¦ÄÜʱ£¬¿ÉÒÔʹÓÃOPENDATASOURCE»òOPENROWSET½øÐд¦Àí¡£

bcpÃüÁî²¢²»Ì«ÊʺÏͨ¹ý³ÌÐòÀ´µ÷Óã¬Èç¹ûÐèҪʹÓÃÅúÁ¿µÄ·½Ê½µ¼Êý¾Ý£¬¿ÉÒÔͨ¹ýÅú´¦ÀíÎļþµ÷ÓÃbcpÃüÁÕâÑù×ö¼´²»ÐèÒª±àд´óÁ¿µÄ³ÌÐò£¬Ò²ÎÞÐèÔÚÆóÒµ¹ÜÀíÆ÷ÖÐͨ¹ý¸÷ÖÖ²Ù×÷½çÃæµÄÇл»À´½øÐÐÊý¾Ýµ¼Èëµ¼³ö¡£Òò´Ë£¬Ëü±È½ÏÊʺÏÔÚ¿Í»§¶Ëδ°²ÆóÒµ¹ÜÀíÆ÷»òʹÓÃSQL Server Expressʱ¶ÔÊý¾Ý½øÐпìËÙµ¼Èëµ¼³öµÄ³¡ºÏ¡£
ÎÄÕÂÆÀÂÛ

¹²ÓÐ 0 ÌõÆÀÂÛ