本文へスキップ

CSV を SQL Server に変換

CSV ファイルをドロップすると、CREATE TABLE と INSERT 文を含む SQL Server 用のスクリプトができます。各列に型を付け、すべての修正を行と列とともに一覧にします。

ファイル
csvventas_2024.csvサンプルファイル、357 B
データベース

5 行を変換、修正 8 件、却下なし

表示
ventas_2024.csv の先頭の行です。修正した箇所に印が付いています
行
500412Peña MuñozMérida15/02/20241.234,50sí
600413José Ángel RuizLeón03/02/202499,90no
700414Zoë OrtízQuerétaro29/02/2024N/Así
800415Ñuño CastañedaOaxaca28/02/20247,25no
900416Iñaki OlaizolaMazatlán11/03/2024980,75sí
-- Written by IntoSQL for SQL Server.

SET NOCOUNT ON;
BEGIN TRANSACTION;

CREATE TABLE ventas_2024 (
    folio nvarchar(8) NOT NULL,
    cliente nvarchar(16) NOT NULL,
    ciudad nvarchar(16) NOT NULL,
    fecha date NOT NULL,
    importe decimal(6,2),
    pagado bit NOT NULL
);

INSERT INTO ventas_2024 (folio, cliente, ciudad, fecha, importe, pagado) VALUES
(N'00412', N'Peña Muñoz', N'Mérida', '2024-02-15', 1234.50, 1),
(N'00413', N'José Ángel Ruiz', N'León', '2024-02-03', 99.90, 0),
(N'00414', N'Zoë Ortíz', N'Querétaro', '2024-02-29', NULL, 1),
(N'00415', N'Ñuño Castañeda', N'Oaxaca', '2024-02-28', 7.25, 0),
(N'00416', N'Iñaki Olaizola', N'Mazatlán', '2024-03-11', 980.75, 1);

COMMIT TRANSACTION;

修正

  1. ファイルは windows‑1252 で書かれていたため、UTF-8 に変換しました。
  2. ヘッダーは 4 行目にあります。その上の行は含めていません。
  3. 10 行目 ("TOTAL") は合計のため、含めていません。
  4. "Folio" の先頭のゼロを保持しました。00412 は 00412 のまま、テキストとして保存します。
  5. 15/02/2024 から "Fecha" の日付は日が先とわかるため、03/02/2024 は 2024‑02‑03 として読み取ります。
  6. "Importe" の数値は小数点にカンマを使っています。1.234,50 は 1234.50 として読み取ります。
  7. "Importe" の N/A を空として読み取りました(5 件中 1 件)。
  8. "Pagado" には「はい/いいえ」の語 (sí, no) があるため、ブール値として保存しました。

ファイルはこのコンピューター上で変換され、アップロードされることはありません。

その他のサンプル:

CSV から SQL Server へ、列ごとに

上のサンプル ventas_2024.csv を IntoSQL が SQL Server 用に書き出した結果です。各列のファイル内の内容、付く型、最初の値がスクリプトでどうなるかを示します。

ファイル内最初の値列SQL Server の型スクリプト内
Folio00412folionvarchar(8)N'00412'
ClientePeña Muñozclientenvarchar(16)N'Peña Muñoz'
CiudadMéridaciudadnvarchar(16)N'Mérida'
Fecha15/02/2024fechadate'2024-02-15'
Importe1.234,50importedecimal(6,2)1234.50
Pagadosípagadobit1

スクリプトを SQL Server に読み込む

ダウンロードされるのは普通の .sql ファイルです。SQL Server 付属のツールで実行してください。

ターミナルから

sqlcmd -S localhost -d mydb -f 65001 -i ventas_2024.sql_server.sql

-f 65001 でファイルを UTF-8 として読むため、アクセント記号や ñ は書かれたとおりに届きます。

データベースツールから

SQL Server Management Studio や Azure Data Studio では、ファイルを開いて Execute を選びます。

CSV ファイルと SQL Server について知っておくこと

IntoSQL が CSV ファイルから読み取るもの

  • Windows-1252 や UTF-16 を含め文字コードを判別するので、アクセント記号や ñ もそのまま届きます。
  • 区切り文字を判別します。カンマ、セミコロン、タブ、縦線に対応しています。セミコロン区切りでは、1.234,50 のような小数点のカンマを数値として読み取ります。
  • 引用符で囲まれた値には、区切り文字や改行を含められます。

SQL Server について知っておくこと

  • テキストは N'...' の値を使った nvarchar なので、アクセント記号も失われません。4000 文字を超えるテキストは nvarchar(max) になります。
  • はい/いいえの値は bit に、時差付きの日付は datetimeoffset になります。
  • 長い値は分割して書き込まれるので、sqlcmd や SQL Server Management Studio でもスクリプトを実行できます。

SQL Server で各種類の値がどう保存されるか

値SQL Server
はい/いいえbit
整数int
大きな整数bigint
小数decimal(p,s)
浮動小数点数float
日付date
時刻time
日付と時刻datetime2
日付と時刻、時差付きdatetimeoffset
テキストnvarchar(n)nvarchar(max)

CSV から SQL Server への変換に関する質問

ここに答えがない場合は、お問い合わせページからご連絡ください。担当者が返信します。 お問い合わせページ

CSV を SQL Server に変換するには?

このページ上部のコンバーターにファイルをドロップしてください。ヘッダーを見つけ、すべての値を読み取り、行った修正を一覧にしながら SQL Server 用のスクリプトを書き出します。スクリプトをダウンロードし、sqlcmd で実行してください。

CSV の区切りがセミコロンやタブの場合は?

区切り文字はカンマ、セミコロン、タブ、縦線から自動で検出されます。「その他のオプション」で指定することもできます。セミコロン区切りでは、1.234,50 のような小数点カンマも数値として読み取ります。

SQL Server ではどの型を使いますか?

はい/いいえの値は bit、整数は int、小数は decimal(p,s)、日付は date、時刻付きの日付は datetime2、テキストは nvarchar(n) になります。サイズは各列の最も長い値から決まります。

SQL Server で先頭のゼロは残りますか?

はい。00412 のようなコードはテキストのまま扱われるため、SQL Server では nvarchar(8) として保存され、スクリプトには N'00412' と書かれます。

スクリプトを使わずに SQL Server にデータを読み込めますか?

いいえ。スクリプトをダウンロードし、sqlcmd で実行してください。スクリプトなしの読み込みは、デスクトップアプリかコマンドラインから PostgreSQL、MySQL、MariaDB、SQLite に対して使えます。

CSV ファイルはどのくらいの大きさまで扱えますか?

ブラウザは CSV を流れてくる順に読むため、数 GB のファイルも扱えます。Apple M4 のノートパソコンでは、コマンドラインが 100 万行・174 MB の CSV を 1 秒未満で変換します。