/******* ส่งออกเป็น Excel
exec master..xp_cmdshell 'bcp setdb.dbo.shanghu ออก c:temp1.xls -c -q -s"gnetdata/gnetdata" -u"sa" -p""'
/************ นำเข้า Excel
เลือก *
จาก opendatasource( 'microsoft.jet.oledb.4.0',
'แหล่งข้อมูล = "c:test.xls";รหัสผู้ใช้=ผู้ดูแลระบบ;รหัสผ่าน=;คุณสมบัติขยาย=excel 5.0')...xactions
เลือก cast(cast(หมายเลขบัญชีเป็นตัวเลข (10,2)) เป็น nvarchar(255))+' ' แปลงนามแฝง
จาก opendatasource( 'microsoft.jet.oledb.4.0',
'แหล่งข้อมูล = "c:test.xls";รหัสผู้ใช้=ผู้ดูแลระบบ;รหัสผ่าน=;คุณสมบัติขยาย=excel 5.0')...xactions
/** นำเข้าไฟล์ข้อความ
exec master..xp_cmdshell 'bcp dbname..tablename ใน c:dt.txt -c -sservername -usa -ppassword'
/** ส่งออกไฟล์ข้อความ
exec master..xp_cmdshell 'bcp "dbname..tablename" ออก c:dt.txt -c -sservername -usa -ppassword'
ประโยคนี้จะต้องอยู่ในเครื่องหมายคำพูด
หรือ
exec master..xp_cmdshell 'bcp "เลือก * จาก dbname..tablename" แบบสอบถาม c:dt.txt -c -sservername -usa -ppassword'
ส่งออกเป็นข้อความ txt คั่นด้วยเครื่องหมายจุลภาค
exec master..xp_cmdshell 'bcp "ชื่อไลบรารี .. ชื่อตาราง" ออก "d:tt.txt" -c -t ,-u sa -p รหัสผ่าน'
แทรกชื่อไลบรารีจำนวนมาก..ชื่อตาราง
จาก 'c:test.txt'
กับ (
ฟิลด์เทอร์มิเนเตอร์ = ';',
ตัวยุติแถว = 'n'
-
--/* ไฟล์ dbase iv
เลือก * จาก
openrowset('microsoft.jet.oledb.4.0'
,'dbase iv;hdr=no;imex=2;database=c:','เลือก * จาก [ข้อมูลลูกค้า 4.dbf]')
-
--/* ไฟล์ dbase iii
เลือก * จาก
openrowset('microsoft.jet.oledb.4.0'
,'dbase iii;hdr=no;imex=2;database=c:','เลือก * จาก [ข้อมูลลูกค้า 3.dbf]')
-
--/* ฐานข้อมูล Foxpro
เลือก * จาก openrowset('msdasql',
'ไดรเวอร์=ไดรเวอร์ Microsoft Visual Foxpro;sourcetype=dbf;sourcedb=c:',
'เลือก * จาก [aa.dbf]')
-
/******************นำเข้าไฟล์ dbf******************/
เลือก * จาก openrowset('msdasql',
'ไดรเวอร์ = ไดรเวอร์ Microsoft Visual Foxpro;
sourcedb=e:vfp98data;
ประเภทแหล่งที่มา=dbf',
'เลือก * จากลูกค้า โดยที่ประเทศ != "usa" สั่งซื้อตามประเทศ')
ไป
/************************ ส่งออกไปยัง dbf ***************/
หากคุณต้องการส่งออกข้อมูลไปยังตาราง foxpro โครงสร้างที่สร้างขึ้น (เช่น ที่มีอยู่) คุณสามารถใช้คำสั่ง sql ต่อไปนี้ได้โดยตรง
แทรกลงใน openrowset('msdasql',
'ไดรเวอร์=ไดรเวอร์ Microsoft Visual Foxpro;sourcetype=dbf;sourcedb=c:',
'เลือก * จาก [aa.dbf]')
เลือก * จากตาราง
แสดงให้เห็น:
sourcedb=c: ระบุโฟลเดอร์ที่มีตาราง foxpro อยู่
aa.dbf ระบุชื่อไฟล์ของตาราง foxpro
/******************ส่งออกเพื่อเข้าถึง************************/
แทรกลงใน openrowset('microsoft.jet.oledb.4.0',
'x:a.mdb';'admin';'',a table) เลือก * จากชื่อฐานข้อมูล..b table
/******************นำเข้าการเข้าถึง************************/
แทรกลงในตาราง b selet * จาก openrowset('microsoft.jet.oledb.4.0',
'x:a.mdb';'admin';'',ตาราง)
********************* นำเข้าไฟล์ xml
ประกาศ @idoc int
ประกาศ @doc varchar (1,000)
--ตัวอย่างเอกสาร xml
ตั้ง @doc ='
<ราก>
<ลูกค้า cid= "c1" name="janine" city="issaquah">
<คำสั่งซื้อ oid="o1" date="20/1/1996" amount="3.5" />
<order oid="o2" date="4/30/1997" amount="13.4">ลูกค้าพอใจมาก
</สั่งซื้อ>
</ลูกค้า>
<ลูกค้า cid="c2" name="ursula" city="oelde" >
<order id="o3" date="7/14/1999" amount="100" note="ห่อเป็นสีน้ำเงิน
ขาวแดง">
<เร่งด่วน>สำคัญ</เร่งด่วน>
ลูกค้ามีความสุข
</สั่งซื้อ>
<สั่งซื้อ id="o4" date="1/20/1996" amount="10000"/>
</ลูกค้า>
</ราก>
-
-- สร้างการแสดงภายในของเอกสาร xml
exec sp_xml_preparedocument เอาต์พุต @idoc, @doc
-- ดำเนินการคำสั่ง select โดยใช้ผู้ให้บริการแถว openxml
เลือก *
จาก openxml (@idoc, '/root/customer/order', 1)
ด้วย (oid ถ่าน (5)
จำนวนลอยตัว,
ความคิดเห็น ntext 'ข้อความ ()')
ผู้บริหาร sp_xml_removedocument @idoc
/**********************นำเข้าฐานข้อมูลทั้งหมด*********************** ***** *******************/
ขั้นตอนที่เก็บไว้ดำเนินการโดยใช้ bcp
-
ใช้ขั้นตอนการจัดเก็บสำหรับการนำเข้า/ส่งออกข้อมูล
ตามพารามิเตอร์ที่แตกต่างกัน คุณสามารถนำเข้า/ส่งออกฐานข้อมูลทั้งหมด/ตัวอย่างการเรียกตารางเดียว:
--export ตัวอย่างการโทร
----ส่งออกตารางเดียว
exec file2table 'zj','','','xzkh_sa..ข้อมูลภูมิภาค','c:zj.txt',1
----ส่งออกฐานข้อมูลทั้งหมด
exec file2table 'zj','','','xzkh_sa','c:docman',1
--นำเข้าตัวอย่างการโทร
----นำเข้าตารางเดียว
exec file2table 'zj','','','xzkh_sa..ข้อมูลภูมิภาค','c:zj.txt',0
----นำเข้าฐานข้อมูลทั้งหมด
exec file2table 'zj','','','xzkh_sa','c:docman',0
-
ถ้ามี (เลือก 1 จาก sysobjects โดยที่ name='file2table' และ objectproperty(id,'isprocedure')=1)
วางขั้นตอน file2table
ไป
สร้างขั้นตอน file2table
@servername varchar(200) --ชื่อเซิร์ฟเวอร์
,@ชื่อผู้ใช้ varchar(200) --ชื่อผู้ใช้ หากใช้วิธีตรวจสอบ nt จะว่างเปล่า''
,@รหัสผ่าน varchar(200) --รหัสผ่าน
,@tbname varchar(500) --database.dbo.table name หากคุณไม่ระบุ:.dbo.table name ตารางผู้ใช้ทั้งหมดของฐานข้อมูลจะถูกส่งออก
,@filename varchar(1000) --พาธการนำเข้า/ส่งออก/ชื่อไฟล์ หากพารามิเตอร์ @tbname ระบุว่าจะส่งออกฐานข้อมูลทั้งหมด พารามิเตอร์นี้จะเป็นพาธการจัดเก็บไฟล์ และชื่อไฟล์จะใช้ชื่อตาราง .txt โดยอัตโนมัติ
,@isout bit --1 คือการส่งออก, 0 คือการนำเข้า
เช่น
ประกาศ @sql varchar (8000)
ถ้า @tbname เช่น '%.%.%' --หากระบุชื่อตาราง ตารางเดียวจะถูกส่งออกโดยตรง
เริ่ม
ตั้ง @sql='bcp '+@tbname
+case เมื่อ @isout=1 จากนั้น ' out ' else ' ใน ' end
+' " '+@ชื่อไฟล์+' " /w'
+' /s '+@ชื่อเซิร์ฟเวอร์
+ตัวพิมพ์เมื่อ isnull(@username,'')='' จากนั้น '' else ' /u '+@username end
+' /p '+isnull(@รหัสผ่าน,'')
ผู้บริหาร..xp_cmdshell @sql
จบ
อื่น
start --export ฐานข้อมูลทั้งหมด กำหนดเคอร์เซอร์ และลบตารางผู้ใช้ทั้งหมด
ประกาศ @m_tbname varchar (250)
ถ้าใช่(@filename,1)<>'' set @filename=@filename+''
set @m_tbname='declare #tb cursor for select name from '+@tbname+'..sysobjects โดยที่ xtype=''u'''
ผู้บริหาร(@m_tbname)
เปิด #TB
ดึงข้อมูลถัดไปจาก #tb เข้าสู่ @m_tbname
ในขณะที่ @@fetch_status=0
เริ่ม
ตั้ง @sql='bcp '+@tbname+'..'+@m_tbname
+case เมื่อ @isout=1 จากนั้น ' out ' else ' ใน ' end
+' " '+@ชื่อไฟล์+@m_tbname+'.txt " /w'
+' /s '+@ชื่อเซิร์ฟเวอร์
+ตัวพิมพ์เมื่อ isnull(@username,'')='' จากนั้น '' else ' /u '+@username end
+' /p '+isnull(@รหัสผ่าน,'')
ผู้บริหาร..xp_cmdshell @sql
ดึงข้อมูลถัดไปจาก #tb เข้าสู่ @m_tbname
จบ
ปิด #tb
จัดสรรคืน #tb
จบ
ไป
/************************excel เป็น txt************************ ****** *******************/
อยากใช้
เลือก * ลงใน opendatasource(...) จาก opendatasource(...)
การดำเนินการนำเข้าเนื้อหาของไฟล์ Excel ลงในไฟล์ข้อความ
สมมติว่ามีสองคอลัมน์ใน Excel คอลัมน์แรกคือชื่อ และคอลัมน์ที่สองคือหมายเลขบัญชี (16 หลัก)
และหมายเลขบัญชีธนาคารแบ่งออกเป็น 2 ส่วนหลังจากส่งออกเป็นไฟล์ข้อความ โดยแยก 8 หลักแรกและ 8 หลักสุดท้าย
หากคุณต้องการแทรกโดยใช้ใบแจ้งยอดข้างต้น ต้องมีไฟล์ข้อความและมีบรรทัดเดียว: ชื่อ บัญชีธนาคารหมายเลข 1 บัญชีธนาคารหมายเลข 2
จากนั้นคุณสามารถใช้คำสั่งต่อไปนี้เพื่อแทรก โปรดทราบว่าชื่อไฟล์และไดเร็กทอรีสามารถแก้ไขได้ตามสถานการณ์จริงของคุณ
ใส่เข้าไป
opendatasource('microsoft.jet.oledb.4.0'
,'text;hdr=yes;database=c:'
)...[อ๊า#txt]
--,aa#txt)
-
เลือกชื่อ บัญชีธนาคารหมายเลข 1=ซ้าย (หมายเลขบัญชีธนาคาร 8) บัญชีธนาคารหมายเลข 2 = ขวา (หมายเลขบัญชีธนาคาร 8)
จาก
opendatasource('microsoft.jet.oledb.4.0'
,'excel 5.0;hdr=ใช่;imex=2;ฐานข้อมูล=c:a.xls'
--,แผ่นงาน1$)
)...[แผ่นงาน1$]
หากคุณต้องการแทรกและสร้างไฟล์ข้อความโดยตรง ให้ใช้ bcp
ประกาศ @sql varchar (8000),@tbname varchar (50)
--ขั้นแรกให้นำเข้าเนื้อหาของตาราง Excel ลงในตารางชั่วคราวส่วนกลาง
เลือก @tbname='[##temp'+cast(newid() as varchar(40))+']'
,@sql='เลือกชื่อ เลขที่บัญชีธนาคาร 1=ซ้าย (เลขที่บัญชีธนาคาร 8) เลขที่บัญชีธนาคาร 2 = ขวา (เลขที่บัญชีธนาคาร 8)
เข้าสู่ '+@tbname+' จาก
opendatasource(''microsoft.jet.oledb.4.0''
,''excel 5.0;hdr=ใช่;imex=2;ฐานข้อมูล=c:a.xls''
)...[sheet1$]'
ผู้บริหาร(@sql)
--จากนั้นใช้ bcp เพื่อส่งออกจากตารางชั่วคราวส่วนกลางไปยังไฟล์ข้อความ
ตั้ง @sql='bcp " '+@tbname+' " ออก "c:aa.txt" /s"(local)" /p"" /c'
ผู้บริหาร..xp_cmdshell @sql
--ลบตารางชั่วคราว
exec('วางตาราง '+@tbname )
ขั้นตอนการจัดเก็บสำหรับการนำเข้าและส่งออกไฟล์ไปยังฐานข้อมูลโดยใช้ bcp:
/*--bcp-นำเข้าและส่งออกไฟล์ไบนารี
รองรับการนำเข้า/ส่งออกรูปภาพ ข้อความ ฟิลด์ข้อความ
รูปภาพเหมาะสำหรับไฟล์ไบนารี่, ntext เหมาะสำหรับไฟล์ข้อมูลข้อความ
หมายเหตุ: เมื่อนำเข้า แถวทั้งหมดที่ตรงตามเงื่อนไขจะถูกเขียนทับ
เมื่อส่งออก บรรทัดทั้งหมดที่ตรงตามเงื่อนไขจะถูกส่งออกไปยังไฟล์ที่ระบุด้วย
ขั้นตอนการจัดเก็บนี้ใช้ bcp เพื่อใช้งาน Zou Jian 2003.08-----------------*/
/*--ตัวอย่างการโทร
--การส่งออกข้อมูล
ดำเนินการ p_binaryio 'zj','','','acc_demo data..tb','img','c:zj1.dat'
--การส่งออกข้อมูล
exec p_binaryio 'zj','','','acc_demo data..tb','img','c:zj1.dat','',0
-
ถ้ามี (เลือก * จาก dbo.sysobjects โดยที่ id = object_id(n'[dbo].[p_binaryio]') และ objectproperty(id, n'isprocedure') = 1)
วางขั้นตอน [dbo] [p_binaryio]
ไป
สร้าง proc p_binaryio
@servename varchar (30),--ชื่อเซิร์ฟเวอร์
@ชื่อผู้ใช้ varchar (30), --username
@password varchar (30), --password
@tbname varchar (500) --database..ชื่อตาราง
@fdname varchar (30), --ชื่อฟิลด์
@fname varchar (1,000), --directory + ชื่อไฟล์, ใช้/เขียนทับระหว่างการประมวลผล: @filename+.bak
@tj varchar (1000)='', --การประมวลผลเงื่อนไข สำหรับการนำเข้าข้อมูล หากเงื่อนไขมี @fdname โปรดระบุคำนำหน้าชื่อตาราง
@isout bit=1 --1 ส่งออก ((ค่าเริ่มต้น) 0 นำเข้า
เช่น
ประกาศ @fname_in varchar(1000) --bcp กำลังประมวลผลชื่อไฟล์ตอบกลับ
,@fsize varchar(20) --ขนาดของไฟล์ที่จะประมวลผล
,@m_tbname varchar(50) --ชื่อตารางชั่วคราว
,@sql วาชาร์ (8000)
--รับขนาดของไฟล์ที่นำเข้า
ถ้า @isout=1
ตั้งค่า @fsize='0'
อื่น
เริ่ม
สร้างตาราง #tb (ชื่อเสริม varchar (20) ขนาด int
, วันที่สร้าง varchar(10), เวลาสร้าง varchar(20)
, วันที่ดำเนินการเขียนล่าสุด varchar(10), เวลาดำเนินการเขียนล่าสุด varchar(20)
,วันที่เข้าถึงล่าสุด varchar(10), เวลาเข้าถึงล่าสุด varchar(20),int ลักษณะเฉพาะ
แทรกลงใน #tb
ผู้บริหารระดับสูง..xp_getfiledetails @fname
เลือก @fsize=sizefrom #tb
วางโต๊ะ #tb
ถ้า @fsize เป็นโมฆะ
เริ่ม
พิมพ์ 'ไม่พบไฟล์'
กลับ
จบ
จบ
--สร้างไฟล์ตอบกลับการประมวลผลข้อมูล
set @m_tbname='[##temp'+cast(newid() as varchar(40))+']'
ตั้งค่า @sql='select * เป็น '+@m_tbname+' จาก(
เลือก null เป็นประเภท
ยูเนี่ยนทั้งหมดเลือก 0 เป็นคำนำหน้า
ยูเนี่ยนทั้งหมดเลือก '+@fsize+' เป็นความยาว
ยูเนี่ยนทั้งหมดเลือก null เมื่อสิ้นสุด
ยูเนี่ยนทั้งหมดเลือก null เป็นรูปแบบ
) เป็น'
ผู้บริหาร(@sql)
เลือก @fname_in=@fname+'_temp'
,@sql='bcp " '+@m_tbname+' " ออก " '+@fname_in
+'" /s" '+@servename
+ตัวพิมพ์เมื่อ isnull(@ชื่อผู้ใช้,'')='' แล้วก็ ''
else '" /u" '+@username สิ้นสุด
+'" /p"'+isnull(@รหัสผ่าน,'')+'" /c'
ผู้บริหาร..xp_cmdshell @sql
--ลบตารางชั่วคราว
ตั้ง @sql='วางตาราง '+@m_tbname
ผู้บริหาร(@sql)
ถ้า @isout=1
เริ่ม
ตั้ง @sql='bcp "เลือก 1 อันดับแรก '+@fdname+' จาก '
+@tbname+case isnull(@tj,'') เมื่อ '' แล้ว ''
else ' โดยที่ '+@tj สิ้นสุด
+'" แบบสอบถาม " '+@fname
+'" /s" '+@servename
+ตัวพิมพ์เมื่อ isnull(@ชื่อผู้ใช้,'')='' แล้วก็ ''
else '" /u" '+@username สิ้นสุด
+'" /p"'+isnull(@รหัสผ่าน,'')
+'" /i" '+@fname_in+''"'
ผู้บริหาร..xp_cmdshell @sql
จบ
อื่น
เริ่ม
--เตรียมตารางชั่วคราวสำหรับการนำเข้าข้อมูล
ตั้งค่า @sql='เลือก 0 อันดับแรก '+@fdname+' เป็น '
+@m_tbname+' จาก ' +@tbname
ผู้บริหาร(@sql)
--นำเข้าข้อมูลลงในตารางชั่วคราว
ตั้งค่า @sql='bcp " '+@m_tbname+' " ใน " '+@fname
+'" /s" '+@servename
+ตัวพิมพ์เมื่อ isnull(@ชื่อผู้ใช้,'')='' แล้วก็ ''
else '" /u" '+@username สิ้นสุด
+'" /p"'+isnull(@รหัสผ่าน,'')
+'" /i" '+@fname_in+''"'
ผู้บริหาร..xp_cmdshell @sql
--นำเข้าข้อมูลลงในตารางอย่างเป็นทางการ
ตั้ง @sql='update '+@tbname
+' ตั้งค่า '+@fdname+'=b.'+@fdname
+' จาก '+@tbname+' ก,'
+@m_tbname+' ข'
+case isnull(@tj,'') เมื่อ '' แล้ว ''
else ' โดยที่ '+@tj สิ้นสุด
ผู้บริหาร(@sql)
--ลบตารางชั่วคราวที่ประมวลผลข้อมูล
ตั้ง @sql='วางตาราง '+@m_tbname
จบ
--ลบไฟล์คำตอบการประมวลผลข้อมูล
ตั้งค่า @sql='del '+@fname_in
ผู้บริหาร..xp_cmdshell @sql