ความขี้เกียจเป็นบ่อเกิดของนวัตกรรม วันนี้เลยตั้ง schedule เพื่อ backup ข้อมูลออกมาเป็นไฟล์ excel หรือ csv โดยใช้กระบวนการเดียวกับ บันทึกการทำ Auto Backup ด้วย batch แจ้งผ่าน Line Notify API โดยใช้ code สำหรับการ export ดังนี้
sqlcmd -S . -d AzureDemo50 -E -s, -W -Q "SELECT * FROM dbo04.ExcelTest" > ExcelTest.csv
-S .
The option defines the localhost server. Use .\SQLEXPRESS for a named SQL Express instance.
-d AzureDemo50
The option defines the database AzureDemo50.
-E
The option defines the trusted connection. You may use user credentials instead: -U Username -P Password
-s,
The option defines the comma as a column separator. Use -s; for semicolon.
-W
The option removes trailing spaces.
-Q "SELECT * FROM dbo04.ExcelTest"
The option defines a command line query and exit.
> ExcelTest.csv
The command redirects the data to the output file.
ที่มา: https://www.excel-sql-server.com/sql-server-export-to-excel-using-bcp-sqlcmd-csv.htm#
ตัวอย่างที่ใช้งาน
sqlcmd -S {SERVERNAME}.{INSTANCE} -U "{USER}" -P "{PASSWORD}" -d {DATABASENAME} -W "-s," -Q "SELECT * FROM {VIEW}" > {FILENAME}.csv
-S {SERVERNAME}
ชื่อเครื่องหากใช้งานในเครื่องเดียวกัน จะไม่ใส่ก็ได้ เพราะระบบจะเข้าหาจาก localhost และเรียกผ่าน .\SQLEXPRESS โดยอัตโนมัติ และหากใช้งานเพื่อเชื่อมต่อไปยัง server อื่น ให้ใส่ชื่อของ server เข้าไปด้วย เช่น -S DBDRSITE
-U “{USER}” -P “{PASSWORD}”
ชื่อ Username และ Password สำหรับการเชื่อมต่อกับ Server ข้างต้น เช่น -U "admin" -P "123456"
-d {DATABASENAME}
ชื่อฐานข้อมูล เช่น hospital_profile
-W
ลบช่องว่างที่ต่อท้าย
“-s,”
ให้เติม comma , เข้าไประหว่าง column
-Q “SELECT * FROM {VIEW}” > {PATH\FILENAME}.csv
query ที่ใช้เพื่อดึงข้อมูล ในที่นี้จะเรียกผ่าน view ที่สร้างไว้ เช่น [dbo].[v_ac_activityfull]
และส่งไปเก็บตาม directory ที่ระบุไว้
กันลืม
หากใช้กับ localhost สามารถใช้ -E เพื่อใช้ trusted connection แทนการใส่ -U และ -P (ในที่นี้หมายถึง ใช้ Windows Authentication )