เพราะว่า SQL Server มี datetime แถมมี datetine2 ขั้นมาอีก โดยสามารถ insert datetime ใน column datetine2 ได้ แต่ datetime2 ใส่ใน คอลัมน์ datetine ไม่ได้ เป็นสาเหตุที่ export ออกไปเป็น sql แล้ว import กลับไปไม่ได้ทั้ง ๆ ที่ ตารางเดียวกันแท้ ๆ
การที่ export data โดย DBeaver ทำให้ต้องมีการ export 2 แบบซึ่งทำได้โดย Formatting:
- สามารถ import formatting ได้โดยการวางไฟล์ dataformat-profiles.xml
- Windows อยู่ใน %APPDATA\DBeaverData\workspace6\.metadata\.plugins\org.jkiss.dbeaver.core
- macOS อยู่ใน ~/Library/DBeaverData/workspace6/.metadata/.plugins/org.jkiss.dbeaver.core
- Linux อยู่ใน $XDG_DATA_HOME/DBeaverData/workspace6/.metadata/.plugins/org.jkiss.dbeaver.core
สร้างไฟล์ dataformat-profiles.xml โดยมีเนื้อหา
<?xml version="1.0" encoding="UTF-8"?>
<profiles>
<profile name="MSSQL Thailand - ISO 8601 Export - Datetime">
<property name="dataformat.profile.country" value="TH"/>
<property name="dataformat.profile.language" value="th"/>
<property name="dataformat.profile.variant" value="TH"/>
<property name="dataformat.type.date.pattern" value="yyyyMMdd"/>
<property name="dataformat.type.time.pattern" value="HH:mm:ss"/>
<property name="dataformat.type.timestamp.pattern" value="yyyyMMdd HH:mm:ss"/>
<property name="dataformat.type.time.timezone" value="Asia/Bangkok"/>
<property name="dataformat.type.timestamp.timezone" value="Asia/Bangkok"/>
<property name="dataformat.type.timestamp.truncate-milliseconds" value="true"/>
<property name="dataformat.type.timestamptz.pattern" value="yyyyMMdd HH:mm:ss Z"/>
<property name="dataformat.type.timetz.pattern" value="HH:mm:ss Z"/>
<property name="resultset.format.datetime.native" value="false"/>
</profile>
<profile name="MSSQL Thailand - ISO 8601 Export - Datetime2">
<property name="dataformat.profile.country" value="TH"/>
<property name="dataformat.profile.language" value="th"/>
<property name="dataformat.profile.variant" value="TH"/>
<property name="dataformat.type.date.pattern" value="yyyyMMdd"/>
<property name="dataformat.type.time.pattern" value="HH:mm:ss.SSS"/>
<property name="dataformat.type.timestamp.pattern" value="yyyyMMdd HH:mm:ss.SSS"/>
<property name="dataformat.type.time.timezone" value="Asia/Bangkok"/>
<property name="dataformat.type.timestamp.timezone" value="Asia/Bangkok"/>
<property name="dataformat.type.timestamptz.pattern" value="yyyyMMdd HH:mm:ss.SSS Z"/>
<property name="dataformat.type.timetz.pattern" value="HH:mm:ss.SSS Z"/>
<property name="resultset.format.datetime.native" value="false"/>
</profile>
</profiles>
การใช้งาน
- ใน Database Navigator คลิกขวา ตารางที่เลือก Export Data
- เลือก Export Target ที่ต้องการ เช่น SQL Export to SQL INSERT statements คลิก Next >
- ปรับแต่ง Extraction settings (ถ้าต้องการ) คลิก Next >
- ใน Format settings ให้เลือก Formatting: เช่น
- MSSQL Thailand – ISO 8601 Export – Datetime จะเป็นรูปแบบ วันที่ yyyyMMdd HH:mm:ss
- MSSQL Thailand – ISO 8601 Export – Datetime จะเป็นรูปแบบ วันที่ yyyyMMdd HH:mm:ss.SSS
- ปรับแต่ง Format settings (ถ้าต้องการ) คลิก Next >
- Output เลือก
- Directory: ที่ต้องการ save
- File name pattern: ชื่อไฟล์ เช่น
${project}-${datasource}-${catalog}-${schema}-${table}-${timestamp}
ดูรูปแบบได้จาก Pre configured variables - (ถ้าต้องการปรับแต่งอื่น ๆ )
- คลิก Proceed
ดูว่ารูปแบบวันที่ datetime / datetine2 ตรงตามความต้องการมั๋ย
อ่านเพิ่มเติม