/******* Ekspor ke excel
exec master..xp_cmdshell 'bcp setelb.dbo.shanghu keluar c:temp1.xls -c -q -s"gnetdata/gnetdata" -u"sa" -p""'
/*********** Impor excel
pilih *
dari opendatasource( 'microsoft.jet.oledb.4.0',
'data source="c:test.xls";id pengguna=admin;kata sandi=;properti yang diperluas=excel 5.0')...xactions
pilih cast(cast(nomor akun sebagai numerik(10,2)) sebagai nvarchar(255))+' ' alias yang dikonversi
dari opendatasource( 'microsoft.jet.oledb.4.0',
'data source="c:test.xls";id pengguna=admin;kata sandi=;properti yang diperluas=excel 5.0')...xactions
/** Impor file teks
exec master..xp_cmdshell 'bcp dbname..tablename di c:dt.txt -c -sservername -usa -ppassword'
/** Ekspor file teks
exec master..xp_cmdshell 'bcp "dbname..tablename" keluar c:dt.txt -c -sservername -usa -ppassword'
Kalimat ini perlu diapit tanda petik
atau
exec master..xp_cmdshell 'bcp "pilih * dari dbname..tablename" queryout c:dt.txt -c -sservername -usa -ppassword'
Ekspor ke teks txt, dipisahkan dengan koma
exec master..xp_cmdshell 'bcp "Nama perpustakaan..Nama tabel" keluar "d:tt.txt" -c -t ,-u sa -p kata sandi'
masukkan nama perpustakaan secara massal..nama tabel
dari 'c:test.txt'
dengan (
fieldterminator = ';',
pemisah baris = 'n'
)
--/* berkas dbase iv
pilih * dari
openrowset('microsoft.jet.oledb.4.0'
,'dbase iv;hdr=no;imex=2;database=c:','pilih * dari [Data Pelanggan 4.dbf]')
--*/
--/* berkas dbase iii
pilih * dari
openrowset('microsoft.jet.oledb.4.0'
,'dbase iii;hdr=no;imex=2;database=c:','pilih * dari [Data Pelanggan 3.dbf]')
--*/
--/* basis data foxpro
pilih * dari openrowset('msdasql',
'driver=driver microsoft visual foxpro;sourcetype=dbf;sourcedb=c:',
'pilih * dari [aa.dbf]')
--*/
/******************Impor file dbf******************/
pilih * dari openrowset('msdasql',
'driver=driver microsoft visual foxpro;
sourcedb=e:vfp98data;
tipe sumber=dbf',
'pilih * dari pelanggan di mana negara != pesanan "usa" berdasarkan negara')
pergi
/************************ Ekspor ke dbf ***************/
Jika Anda ingin mengekspor data ke struktur tabel foxpro yang dihasilkan (yaitu yang sudah ada), Anda dapat langsung menggunakan pernyataan sql berikut
masukkan ke openrowset('msdasql',
'driver=driver microsoft visual foxpro;sourcetype=dbf;sourcedb=c:',
'pilih * dari [aa.dbf]')
pilih * dari tabel
menjelaskan:
sourcedb=c: menentukan folder tempat tabel foxpro berada
aa.dbf menentukan nama file tabel foxpro.
/******************Ekspor untuk mengakses************************/
masukkan ke openrowset('microsoft.jet.oledb.4.0',
'x:a.mdb';'admin';'',a tabel) pilih * dari nama database..b tabel
/******************akses impor***************************/
masukkan ke dalam tabel b selet * dari openrowset('microsoft.jet.oledb.4.0',
'x:a.mdb';'admin';'',sebuah tabel)
********************* Impor file xml
nyatakan @idoc int
nyatakan @doc varchar(1000)
--contoh dokumen xml
atur @doc ='
<akar>
<cid pelanggan= "c1" name="janine" city="issaquah">
<pesanan oid="o1" date="20/1/1996" jumlah="3,5" />
<order oid="o2" date="30/4/1997" amount="13.4">pelanggan sangat puas
</pesanan>
</pelanggan>
<pelanggan cid="c2" name="ursula" city="oelde" >
<order oid="o3" date="14/7/1999" amount="100" note="bungkusnya berwarna biru
putih merah">
<urgensi>penting</urgensi>
pelanggan yang bahagia.
</pesanan>
<pesanan oid="o4" date="20/1/1996" jumlah="10000"/>
</pelanggan>
</akar>
'
-- membuat representasi internal dokumen xml.
exec sp_xml_preparedocument keluaran @idoc, @doc
-- jalankan pernyataan pilih menggunakan penyedia rowset openxml.
pilih *
dari openxml (@idoc, '/root/pelanggan/order', 1)
dengan (oid karakter(5),
komentar nteks 'teks()')
exec sp_xml_removedocument @idoc
/************************Impor seluruh database*********************** ***** *******************/
Prosedur tersimpan diimplementasikan menggunakan bcp
/*
Menerapkan prosedur tersimpan untuk impor/ekspor data
Menurut parameter yang berbeda, Anda dapat mengimpor/mengekspor seluruh database/contoh panggilan tabel tunggal:
--contoh panggilan ekspor
----Ekspor satu tabel
exec file2table 'zj','','','xzkh_sa..informasi wilayah','c:zj.txt',1
----Ekspor seluruh database
exec file2table 'zj','','','xzkh_sa','c:docman',1
--Impor contoh panggilan
---- Impor satu tabel
exec file2table 'zj','','','xzkh_sa..informasi wilayah','c:zj.txt',0
---- Impor seluruh database
exec file2table 'zj','','','xzkh_sa','c:docman',0
*/
jika ada(pilih 1 dari sysobjects di mana nama='file2table' dan properti objek(id,'isprocedure')=1)
prosedur drop file2table
pergi
membuat prosedur file2table
@namaserver varchar(200) --nama server
,@namapengguna varchar(200) --Nama pengguna, jika menggunakan metode verifikasi nt, akan kosong''
,@kata sandi varchar(200) --Kata sandi
,@tbname varchar(500) --database.dbo.nama tabel. Jika Anda tidak menentukan:.dbo.nama tabel, semua tabel pengguna database akan diekspor.
,@namafile varchar(1000) --Impor/ekspor jalur/nama file. Jika parameter @tbname menunjukkan untuk mengekspor seluruh database, maka parameter ini adalah jalur penyimpanan file, dan nama file secara otomatis menggunakan nama tabel.txt
,@isout bit --1 adalah ekspor, 0 adalah impor
sebagai
deklarasikan @sql varchar(8000)
if @tbname like '%.%.%' --Jika nama tabel ditentukan, satu tabel akan diekspor secara langsung
mulai
atur @sql='bcp '+@tbname
+kasus ketika @isout=1 lalu ' keluar ' lain ' di ' akhir
+' " '+@namafile+' " /w'
+' /s '+@namaserver
+kasus ketika isnull(@namapengguna,'')='' lalu '' lain ' /u '+@namapengguna berakhir
+' /p '+isnull(@kata sandi,'')
exec master..xp_cmdshell @sql
akhir
kalau tidak
mulai --ekspor seluruh database, tentukan kursor, dan hapus semua tabel pengguna
nyatakan @m_tbname varchar(250)
jika benar(@namafile,1)<>'' set @namafile=@namafile+''
setel @m_tbname='deklarasikan kursor #tb untuk memilih nama dari '+@tbname+'..sysobjects di mana xtype=''u'''
eksekutif(@m_tbname)
buka #tb
ambil selanjutnya dari #tb ke @m_tbname
sementara @@fetch_status=0
mulai
setel @sql='bcp '+@tbname+'..'+@m_tbname
+kasus ketika @isout=1 lalu ' keluar ' lain ' di ' akhir
+' " '+@namafile+@m_tbname+'.txt " /w'
+' /s '+@namaserver
+kasus ketika isnull(@namapengguna,'')='' lalu '' lain ' /u '+@namapengguna berakhir
+' /p '+isnull(@kata sandi,'')
exec master..xp_cmdshell @sql
ambil selanjutnya dari #tb ke @m_tbname
akhir
tutup #tb
membatalkan alokasi #tb
akhir
pergi
/************************unggul ke txt************************ ****** *******************/
Ingin menggunakan
pilih * ke opendatasource(...) dari opendatasource(...)
Implementasi mengimpor konten file excel ke file teks
Misalkan ada dua kolom di excel, kolom pertama adalah nama, dan kolom kedua adalah nomor rekening (16 digit)
Dan nomor rekening bank dibagi menjadi dua bagian setelah diekspor ke file teks, 8 digit pertama dan 8 digit terakhir dipisahkan.
Jika ingin dimasukkan menggunakan pernyataan di atas, file teks harus ada dan memiliki satu baris: nama, nomor rekening bank 1, nomor rekening bank 2
Kemudian Anda dapat menggunakan pernyataan berikut untuk menyisipkan. Perhatikan bahwa nama file dan direktori dapat diubah sesuai dengan situasi Anda yang sebenarnya.
masukkan ke dalam
sumber data terbuka('microsoft.jet.oledb.4.0'
,'teks;hdr=ya;database=c:'
)...[aa#txt]
--,aa#txt)
--*/
pilih nama, nomor rekening bank 1=kiri (nomor rekening bank, 8), nomor rekening bank 2 = kanan (nomor rekening bank, 8)
dari
sumber data terbuka('microsoft.jet.oledb.4.0'
,'excel 5.0;hdr=ya;imex=2;database=c:a.xls'
--,lembar1$)
)...[lembar1$]
Jika Anda ingin menyisipkan dan membuat file teks secara langsung, gunakan bcp
nyatakan @sql varchar(8000),@tbname varchar(50)
--Pertama impor isi tabel excel ke tabel sementara global
pilih @tbname='[##temp'+cast(newid() sebagai varchar(40))+']'
,@sql='pilih nama, nomor rekening bank 1=kiri (nomor rekening bank, 8), nomor rekening bank 2 = kanan (nomor rekening bank, 8)
ke '+@tbname+' dari
sumber data terbuka(''microsoft.jet.oledb.4.0''
,''excel 5.0;hdr=ya;imex=2;database=c:a.xls''
)....[lembar1$]'
eksekutif(@sql)
--Kemudian gunakan bcp untuk mengekspor dari tabel sementara global ke file teks
setel @sql='bcp " '+@tbname+' " keluar "c:aa.txt" /s"(lokal)" /p"" /c'
exec master..xp_cmdshell @sql
--Hapus tabel sementara
exec('letakkan tabel '+@tbname )
Prosedur tersimpan untuk mengimpor dan mengekspor file ke database menggunakan bcp:
/*--bcp-Impor dan ekspor file biner
Mendukung impor/ekspor bidang gambar, teks, nteks
gambar cocok untuk file biner, ntext cocok untuk file data teks
Catatan: Saat mengimpor, semua baris yang memenuhi ketentuan akan ditimpa
Saat mengekspor, semua baris yang memenuhi ketentuan juga akan diekspor ke file yang ditentukan.
Prosedur tersimpan ini hanya menggunakan bcp untuk mengimplementasikan Zou Jian 2003.08-----------------*/
/*--Contoh panggilan
--Ekspor data
exec p_binaryio 'zj','','','acc_demo data..tb','img','c:zj1.dat'
--Ekspor data
exec p_binaryio 'zj','','','acc_demo data..tb','img','c:zj1.dat','',0
--*/
jika ada (pilih * dari dbo.sysobjects di mana id = object_id(n'[dbo].[p_binaryio]') dan objectproperty(id, n'isprocedure') = 1)
prosedur pelepasan [dbo].[p_binaryio]
pergi
buat proc p_binaryio
@servename varchar (30),--nama server
@nama pengguna varchar (30), --nama pengguna
@kata sandi varchar (30), --kata sandi
@tbname varchar (500), --database..nama tabel
@fdname varchar (30), --Nama bidang
@fname varchar (1000), --directory + nama file, gunakan/timpa selama pemrosesan: @filename+.bak
@tj varchar (1000)='', --kondisi pemrosesan. Untuk impor data, jika kondisi berisi @fdname, harap tentukan awalan nama tabel
@isout bit=1 --1 ekspor ((default), 0 impor
sebagai
deklarasikan @fname_in varchar(1000) --bcp memproses nama file respons
,@fsize varchar(20) --Ukuran file yang akan diproses
,@m_tbname varchar(50) --nama tabel sementara
,@sqlvarchar(8000)
--Dapatkan ukuran file yang diimpor
jika @isout=1
atur @fsize='0'
kalau tidak
mulai
buat tabel #tb (nama opsional varchar (20), ukuran int
, tanggal pembuatan varchar(10), waktu pembuatan varchar(20)
, tanggal operasi penulisan terakhir varchar(10), waktu operasi penulisan terakhir varchar(20)
,tanggal akses terakhir varchar(10), waktu akses terakhir varchar(20),karakteristik int)
masukkan ke #tb
exec master..xp_getfiledetails @fname
pilih @fsize=ukurandari #tb
jatuhkan tabel #tb
jika @fsize adalah nol
mulai
cetak 'File tidak ditemukan'
kembali
akhir
akhir
--Hasilkan file respons pemrosesan data
setel @m_tbname='[##temp'+cast(newid() sebagai varchar(40))+']'
setel @sql='pilih * ke '+@m_tbname+' dari(
pilih null sebagai tipe
union all pilih 0 sebagai awalan
union all pilih '+@fsize+' sebagai panjangnya
union all pilih null sebagai akhir
union all pilih null sebagai format
) A'
eksekutif(@sql)
pilih @fname_in=@fname+'_temp'
,@sql='bcp " '+@m_tbname+' " keluar " '+@fname_in
+'" /s" '+@servename
+kasus ketika isnull(@namapengguna,'')='' lalu ''
lain '" /u" '+@nama pengguna berakhir
+'" /p"'+isnull(@kata sandi,'')+'" /c'
exec master..xp_cmdshell @sql
--Hapus tabel sementara
setel @sql='letakkan tabel '+@m_tbname
eksekutif(@sql)
jika @isout=1
mulai
set @sql='bcp "pilih 1 teratas '+@fdname+' dari '
+@tbname+case isnull(@tj,'') ketika '' lalu ''
lain ' di mana '+@tj berakhir
+'" permintaan keluar " '+@fname
+'" /s" '+@servename
+kasus ketika isnull(@namapengguna,'')='' lalu ''
lain '" /u" '+@nama pengguna berakhir
+'" /p"'+isnull(@kata sandi,'')
+'" /i" '+@fname_in+'"'
exec master..xp_cmdshell @sql
akhir
kalau tidak
mulai
--Siapkan tabel sementara untuk impor data
setel @sql='pilih 0 teratas '+@fdname+' ke '
+@m_tbname+' dari ' +@tbname
eksekutif(@sql)
--Impor data ke tabel sementara
setel @sql='bcp " '+@m_tbname+' " di " '+@fname
+'" /s" '+@servename
+kasus ketika isnull(@namapengguna,'')='' lalu ''
lain '" /u" '+@nama pengguna berakhir
+'" /p"'+isnull(@kata sandi,'')
+'" /i" '+@fname_in+'"'
exec master..xp_cmdshell @sql
--Impor data ke tabel formal
atur @sql='perbarui '+@tbname
+' setel '+@fdname+'=b.'+@fdname
+' dari '+@tbname+' a,'
+@m_tbname+' b'
+kasus isnull(@tj,'') ketika '' lalu ''
lain ' di mana '+@tj berakhir
eksekutif(@sql)
--Hapus tabel sementara pemrosesan data
setel @sql='letakkan tabel '+@m_tbname
akhir
--Hapus file jawaban pemrosesan data
atur @sql='del '+@fname_in
exec master..xp_cmdshell @sql