選擇 CSV 檔案
把 .csv、.tsv 或 .xlsx 拖到這裡,或點一下選擇檔案
每個月都要做一遍? 在 TableDI 2 裡做一次、存成作業,下個月再跑一次。 免費下載 TableDI 2
不會上傳任何東西。檔案由這個分頁的 JavaScript 讀取,不會離開你的電腦 —— 沒有任何伺服器看得到,關掉分頁資料就沒了。
把 CSV 轉成 SQL
- 放進 CSV. 分隔符號(逗號、分號、Tab、|)與編碼(UTF-8、Big5 等)都會自動判斷。
- 填表名、選資料庫. 方言會影響識別字的引號、布林值寫法、文字與日期型別,以及一句 INSERT 最多幾列。
- 先看欄位型別表. 執行任何東西之前,先確認每一欄被判成什麼型別。編號欄應該是文字,金額欄應該是 DECIMAL。
- 下載或複製. 下載 .sql 檔,或直接複製貼進主控台。
資料庫自己的匯入功能,卡在哪裡
MySQL 的 LOAD DATA INFILE、PostgreSQL 的 COPY、SQL Server 的 BULK INSERT
和各家的匯入精靈,都要求資料表先存在,而且欄位型別要對。對著一份 40 欄的匯出檔用眼睛判斷型別,
才是最花時間的部分;判錯一欄,不是匯到一半失敗,就是全部變成 VARCHAR(255) 還「成功」了。
這一頁替你寫好 CREATE TABLE,並在你執行任何東西之前,把每一欄被判成什麼型別列成一張表。
中文欄名會留下來
台灣系統匯出的 CSV,標題列多半是中文:客戶名稱、訂單編號、金額。
這裡的欄位名稱保留中文 —— 空白與符號換成底線、英文字母轉小寫、數字開頭的加上前綴,同名的兩欄變成
金額 與 金額_2。識別字一律加上引號(MySQL 用反引號、PostgreSQL 與 SQLite 用雙引號、
SQL Server 用中括號),所以中文欄名在四種方言裡都是合法的。
表名的預設值取自檔名,但只保留英文字母與數字:客戶名單.csv 會變成 my_table。
想用中文表名,直接在「表名」欄位裡打就好,它一樣會被加上引號。
Big5 匯出檔與 SQL Server 的 N 前綴
老 ERP、進銷存與政府開放資料的 CSV 還有不少是 Big5(CP950)。檔案放進來時會先判斷編碼, 產生的 SQL 一律是 UTF-8 文字,中文不會以亂碼進到資料表。
目標是 SQL Server 時,每個字串值都會加上 N 前綴(N'台北市'),文字欄位用
NVARCHAR。少了這個前綴,非 Unicode 定序的資料庫會把中文存成問號 —— 這是 SQL Server 匯入中文最常見的坑。
目標是 MySQL 時要注意:CREATE TABLE 沒有寫 CHARSET,請確認資料庫或資料表的預設字元集是 utf8mb4。
型別判斷怎麼決定,以及它不認得什麼
- 編號留成文字。某一欄只要有前導零的值,就視為識別碼,型別是文字,
00012345匯進去還是00012345。 - 金額去掉千分位。
8,600.00進 DECIMAL 欄是8600.00,不是一個加了引號的字串。 但帶著「NT$」或「元」的金額不會被認成數字,整欄會是文字;請先在來源把符號拿掉。 - 日期只認
yyyy-mm-dd(可加時間)。2026/10/01、10/01/2026和民國年的115/10/01都會被當成文字。工具不會把民國年換算成西元年; 要存成日期型別,請先在 Excel 裡把日期欄改成yyyy-mm-dd再匯出。 - 布林值只認 true / false / yes / no。「是 / 否」、「Y / N」會是文字。
- 文字長度依最長的值決定(往上取整),不是每一欄都 VARCHAR(255)。
分組的 INSERT
一列一句 INSERT 很慢,一整句塞全部又會撞到伺服器的封包或參數上限。這裡預設每 500 列一句, 並以方言允許的上限封頂(SQL Server 一句最多 1,000 列),大檔案會變成數量可控的幾句。
這個工具不做的事
- 不連線到你的資料庫。它只產生 SQL 文字,執行由你來。
- 不建索引、主鍵或外鍵。CREATE TABLE 只有欄位與型別。
- 不換算民國年、不處理帶貨幣符號的金額,原因寫在上面。
同一份匯出檔每個月都要匯一次、而且要先檢查欄位有沒有變,那是另一種工作。TableDI 2 是一套桌面軟體,專做每期都要重來一遍的表格工作:來源、規則和交付方式存成一個作業,下個月把新檔案放進去再跑一次。全部在你自己的電腦上執行。
常見問題
產生的 SQL 可以用在哪些資料庫?
MySQL 與 MariaDB、PostgreSQL、SQLite、SQL Server。方言會改變識別字的引號、布林值寫法、文字與時間型別,以及一句 INSERT 的最大列數。
可以只要 INSERT,不要 CREATE TABLE 嗎?
可以,把「包含 CREATE TABLE」取消勾選。資料表已經存在、只需要灌資料時就這樣用。
Big5 的 CSV 可以直接用嗎?中文會變問號嗎?
可以直接用,編碼會自動判斷(UTF-8、Big5、Shift-JIS、GBK、EUC-KR、Windows-1252)。匯到 SQL Server 時字串會加 N 前綴;匯到 MySQL 時請確認字元集是 utf8mb4。
日期欄為什麼被判成文字?
因為只有 yyyy-mm-dd(可加時間)會被認成日期。2026/10/01 或民國年 115/10/01 都會是文字,工具不會換算。先在 Excel 把日期格式改成 yyyy-mm-dd 再匯出即可。
看起來是數字的欄位,為什麼是文字型別?
因為那一欄至少有一個值有前導零。那是編號,當成數字會悄悄改掉它。如果那一欄真的是數量,請在來源拿掉前導零。
檔案會被上傳嗎?多大的檔案可以?
不會上傳,檔案由這個分頁讀取。上限是瀏覽器分頁的記憶體;預覽只顯示前 20,000 個字元的 SQL,下載包含全部。幾百 MB 的檔案請用資料庫自己的大量匯入功能,這一頁拿來寫它需要的 CREATE TABLE 正好。
相關頁面
每個月都要做一遍?
在 TableDI 2 裡先做一次,再存成作業。下個月把新檔案放進去再跑一次。
macOS(Apple 晶片與 Intel);Windows 版還在做(在那之前怎麼辦)。免費版不是試用:不用註冊,不用綁卡。
2026-09-11 由 TableDI 團隊最後檢查。這一頁有錯嗎?告訴我們 —— 只有一個收件匣,由做 TableDI 的人自己看。