Tabloları DB'ye, ancak ayrı dosyalara vermem gerekecek. Her bir tablo için SQL Server Management Studio'da Dışa Aktar sihirbazını çalıştırmak yerine, bunu başarmanın daha hızlı bir yolu var mı? Verilerin boruyla sınırlandırılmış biçimde olması gerekecektir. Bir solution buldum, ancak verileri değil, tablo tanımlarını çekiyor.SQL tablolarını ayrı bir boruyla ayrılmış dosyalara aktarmanın daha hızlı yolu?
cevap
İşte bunu yapmanın bir yolu. Sen Xp_cmdshell
-- To allow advanced options to be changed.
EXEC sp_configure 'show advanced options', 1;
GO
-- To update the currently configured value for advanced options.
RECONFIGURE;
GO
-- To enable the feature.
EXEC sp_configure 'xp_cmdshell', 1;
GO
-- To update the currently configured value for this feature.
RECONFIGURE;
GO
Sonra ayrılmış bir dosya borusuna ihracat belgesiz sp_msforeachtable ve Kullanımıbcp etkinleştirebilirsiniz.
EXECUTE sp_msForEachTable
'EXECUTE master.dbo.xp_cmdshell ''bcp "SELECT * FROM ?" queryout D:\Data\?.txt -t "|" -c -T -S ServerName\InstanceName'''
Bu çalışır ve emin bunu istismar edilebilir olarak zaten etkinleştirmek olmasaydı Xp_cmdshell devre dışı olmak istersiniz (okumak için bol bu hayat var). Ayrıca, dosyaları nereye gitmeleri gerekiyorsa yazmanız için gerekli izinlere sahip olduğunuzdan emin olun.
Execute sp_MSforeachtable
'Execute master.dbo.xp_cmdshell ''sqlcmd -S DATABASE -E -d mydb -q "SET NOCOUNT ON SELECT * FROM ?" -W -o C:\TEMP\?.bak -s "|"'''
çıktı dosyalarında sütun adları altında tire kaldırmak için:
Bu mükemmel bir çözümdür +1. – alas
Teşekkürler bir demet! –
@SQLChao, bcp belgelerine bakıyorum https://msdn.microsoft.com/en-us/library/ms162802.aspx, çıktı dosyalarının ilk satırında sütun isimlerini içerecek bir parametre var mı? Teşekkürler. –
Sınırlayıcı için boru kullanmak üzere dışa aktarma formatını belirtebileceğiniz bcp'yi (burada https://msdn.microsoft.com/en-us/library/ms162802.aspx'a bakın) kullanmayı deneyebilirsiniz. Tek dezavantaj, her seferinde tablo ismini belirlemeniz gerekecek, bu yüzden muhtemelen tablo isimlerini içeren bir liste oluşturmanız ve daha sonra listeye dönüp bcp'yi çalıştırmak için bir powershell betiğini kullanmanız gerekecektir.
Ben de @SQLChao onun çözeltide belirttiği gibi Sp_configure xp_cmdshell için ayarlandı varsayarak yardımcı aşağıdakileri bulundu
Execute sp_MSforeachtable
'Execute master.dbo.xp_cmdshell ''findstr /R /C:"^[^-]*$" c:\temp\?.bak > c:\temp\?.txt'''
Son olarak kaldırmak .bak dosyaları oluşturuldu:
Execute master.dbo.xp_cmdshell 'del c:\temp\*.bak'
- 1. Excel'de satırları SQL Server'a dışa aktarmanın daha hızlı bir yolu var mı?
- 2. Tüm tabloları SQL Server'dan ayrı dosyalara ver
- 3. Tüm sınıfları ayrı dosyalara yerleştirmenin otomatik yolu
- 4. daha hızlı yolu?
- 5. Sql'den Sql Sunucusuna veri aktarmanın en kolay yolu
- 6. MATLAB'da bir matrisi rastgele karıştırmanın daha iyi/daha hızlı bir yolu var mı?
- 7. Python Spark Dataframes: Grupları metin dosyasına dışa aktarmanın daha iyi bir yolu
- 8. Oracle SQL ayrı ayrı seç
- 9. Python'daki bir görüntünün her bir pikselinden geçmenin daha hızlı yolu?
- 10. get_headers'den daha hızlı bir şey()
- 11. HttpHandlers'den daha hızlı bir şey?
- 12. hızlı yolu ++
- 13. hızlı yolu
- 14. Hızlı yolu
- 15. Görüntüyü sunucuya aktarmanın en iyi yolu?
- 16. Code :: Blocks - yeni dosya eklemenin daha hızlı bir yolu
- 17. Scala - boruyla kabuk komutları
- 18. Farklı hızlı yönlendirici paramlarını farklı dosyalara dönüştürün
- 19. SQL: bir + ayrılmış listenin bir tamsayıya dönüştürülmesi
- 20. Hızlı yolu
- 21. Jira konularını GitHub'a aktarmanın bir yolu var mı?
- 22. Daha hızlı bir strptime mi?
- 23. Bu verileri bir Pandas Dataframe'e aktarmanın en kolay yolu nedir?
- 24. Bir jeneratör işlevini dışa aktarmanın herhangi bir yolu var mı?
- 25. hızlı yolu
- 26. Sayfa yönteminden ayrı bir sayfa yönteminden özel nesnelerin bir listesini döndürmenin hızlı bir yolu
- 27. Değişkenleri Ağ Yoluna Aktarmanın bir Yolu Batch dosyası ve Yürütme
- 28. Django birim sınamalarını (manage.py) daha hızlı bir şekilde nasıl çalıştırabilirim?
- 29. PHP file_get_contents Daha Büyük Dosyalara 504 Dönüyor
- 30. Etiketli bölgeleri ayrı ayrı işaretlemenin bir yolu var mı?
dışa istiyorum tüm tablolar CSV dosyalarına? – SQLChao
Hayır, boruyla ayrılmış dosyalara, her tablo için ayrı bir dosya. –
Muhtemelen bunu Powershell – dfundako