這是什麼
把試算表資料匯入資料庫,通常得手寫資料表定義和一長串 INSERT 陳述式,還要逐一跳脫單引號。這個工具幫你完成:貼上 CSV,就能得到可直接執行的 SQL 指令碼,包含 CREATE TABLE 陳述式和分批的多列 INSERT 陳述式。
它依照 RFC 4180 處理加引號的欄位、儲存格中的逗號與換行,以及重複的引號。字串會依所選資料庫正確跳脫,包括 MySQL 中的反斜線和 SQL Server 的 N'…' Unicode 字串。
怎麼用
- 貼上 CSV,上傳
.csv或.tsv檔案,或按 範例。 - 輸入 資料表名稱。需要指定 schema 時用點分隔,例如
public.orders或dbo.orders。 - 選擇 資料庫:MySQL / MariaDB、PostgreSQL、SQLite 或 SQL Server。
- 選擇 每個 INSERT 的列數;如果資料表已存在,關閉 CREATE TABLE。
- 複製 SQL 或下載成
.sql檔,再用資料庫用戶端執行。
分隔符號會自動偵測,也可以手動指定逗號、分號、Tab 或直線。如果第一列是資料而不是欄位名稱,關閉 第一列是標題列,欄位會依序命名為 column_1、column_2 等。
範例
下面這段 CSV:
id,name,price,in_stock
1,Ada's Tea,4.50,true
2,Coffee,,false
會產生這樣的 PostgreSQL 指令碼:
CREATE TABLE "products" (
"id" INTEGER,
"name" TEXT,
"price" NUMERIC(3, 2),
"in_stock" BOOLEAN
);
INSERT INTO "products" ("id", "name", "price", "in_stock") VALUES
(1, 'Ada''s Tea', 4.50, TRUE),
(2, 'Coffee', NULL, FALSE);
Ada's 中的單引號被重複寫成兩個,空白的價格變成 NULL,數字和布林值不加引號。
型別與方言
- MySQL / MariaDB:反引號識別碼,
INT、DECIMAL、BOOLEAN、DATE、DATETIME、VARCHAR(255)或TEXT;字串中的反斜線會被跳脫。 - PostgreSQL:雙引號識別碼,
INTEGER、NUMERIC、BOOLEAN、DATE、TIMESTAMP和TEXT。 - SQLite:雙引號識別碼,使用 SQLite 的儲存類別
INTEGER、REAL和TEXT;布林值寫成 1 和 0。 - SQL Server:方括號識別碼,
INT、DECIMAL、BIT、DATE、DATETIME2和NVARCHAR,字串寫成N'…',每個 INSERT 最多 1000 列。 - 空白儲存格寫成
NULL。關閉 空白儲存格寫成 NULL 後,文字欄位會保留空字串。 - 在正式資料上執行前,請檢查推斷出的型別:範例資料中只有小數字的欄位,日後可能需要更寬的型別。
常見問題
› 支援哪些資料庫?
MySQL(及 MariaDB)、PostgreSQL、SQLite 和 Microsoft SQL Server。所選資料庫決定資料表與欄位名稱的引用方式、字串的跳脫方式、使用的欄位型別,以及布林值的寫法。
› 欄位型別是怎麼決定的?
工具會掃描每個欄位:整數用 INT 或 BIGINT,小數用精度足夠的 DECIMAL,true/false 用 BOOLEAN(SQL Server 用 BIT),ISO 日期用 DATE 或 DATETIME,其餘一律用文字型別。有前導零的數字(例如郵遞區號)維持文字。關閉「偵測型別」後所有欄位都是文字。
› 為什麼 SQL Server 每個 INSERT 最多 1000 列?
SQL Server 不接受超過 1000 列的 VALUES 清單,因此在這個方言下較大的批次會被限制為 1000。其他資料庫可以接受更大的批次,但每個陳述式 100 到 1000 列在速度與陳述式長度之間比較平衡。
› CSV 會上傳嗎?
不會。解析和產生 SQL 都在瀏覽器中完成,資料不會離開你的裝置。