İçeriğe geç

CSV dosyalarını SQL Server için dönüştürün

CSV dosyanızı bırakın, CREATE TABLE ve INSERT ifadeleri içeren bir SQL Server betiği alın. Her sütuna bir tür verilir ve her düzeltme satırı ve sütunuyla listelenir.

Dosyanız
csvventas_2024.csvÖrnek dosya, 357 bayt
Veritabanınız

5 satır dönüştürüldü, 8 düzeltme, reddedilen yok

Göster
ventas_2024.csv dosyasının ilk satırları, her düzeltme işaretli
Satır
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;

Düzeltmeler

  1. Dosya windows‑1252 ile kodlanmıştı; UTF-8'e dönüştürüldü.
  2. Başlık 4. satırda; üstündeki satırlar dışarıda bırakıldı.
  3. 10. satır ("TOTAL") bir toplam; bu yüzden dışarıda bırakıldı.
  4. "Folio" içindeki baştaki sıfırlar korundu: 00412, 00412 olarak kalır ve metin olarak saklanır.
  5. 15/02/2024 değeri, "Fecha" içindeki tarihlerde günün önce geldiğini kanıtlıyor; bu yüzden 03/02/2024, 2024‑02‑03 olarak okunur.
  6. "Importe" içindeki sayılar ondalık virgül kullanıyor: 1.234,50, 1234.50 olarak okunur.
  7. "Importe" içindeki N/A boş olarak okundu (5 değerden 1).
  8. "Pagado" evet ve hayır sözcükleri içeriyor (sí, no); boolean olarak saklandı.

Dosyan bu bilgisayarda dönüştürülür ve asla yüklenmez.

Diğer örnekler:

CSV dosyasından SQL Server için, sütun sütun

Yukarıdaki örnek ventas_2024.csv, IntoSQL'in SQL Server için yazdığı haliyle: her sütunun dosyada ne tuttuğu, aldığı tür ve ilk değerinin betiğe nasıl yazıldığı.

Dosyadaİlk değerSütunSQL Server türüBetikte
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

Betiği SQL Server veritabanına yükleyin

İndirilen dosya düz bir .sql dosyasıdır. SQL Server araçlarıyla çalıştırın.

Terminalden

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

-f 65001 dosyayı UTF-8 olarak okur, böylece aksanlı harfler ve ñ yazıldığı gibi ulaşır.

Bir veritabanı aracından

SQL Server Management Studio veya Azure Data Studio'da dosyayı açıp Execute'u seçin.

CSV dosyaları ve SQL Server hakkında bilmeniz gerekenler

IntoSQL'in CSV dosyalarında okudukları

  • Kodlama algılanır, Windows-1252 ve UTF-16 dahil; böylece aksanlı harfler ve ñ bozulmadan gelir.
  • Ayırıcı algılanır: virgül, noktalı virgül, sekme veya dikey çizgi. Noktalı virgülle, 1.234,50 gibi ondalık virgüller sayı olarak okunur.
  • Tırnak içindeki değerler ayırıcı ve satır sonu içerebilir.

SQL Server hakkında bilmeniz gerekenler

  • Metin, N'...' değerleriyle nvarchar olur, böylece aksanlar korunur; 4000 karakteri aşan metin nvarchar(max) olur.
  • Evet ve hayır değerleri bit olur, saat farkı olan tarihler ise datetimeoffset olur.
  • Uzun değerler parçalar halinde yazılır, böylece sqlcmd ve SQL Server Management Studio betiği kabul eder.

Her değer türü SQL Server içinde nasıl saklanır

DeğerSQL Server
Evet ve hayırbit
Tam sayılarint
Büyük tam sayılarbigint
Ondalık sayılardecimal(p,s)
Kayan noktalı sayılarfloat
Tarihlerdate
Günün saatleritime
Saatli tarihlerdatetime2
Saatli ve saat farkı olan tarihlerdatetimeoffset
Metinnvarchar(n)nvarchar(max)

CSV dosyasından SQL Server için sorular

Yanıtınızı bulamadınız mı? İletişim sayfasından bize yazın, bir kişi yanıt verir. İletişim sayfası

CSV dosyasını SQL Server için nasıl dönüştürürüm?

Dosyanızı bu sayfanın üstündeki dönüştürücüye bırakın. Başlığı bulur, her değeri okur ve yaptığı her düzeltmeyi listeleyerek SQL Server betiğini yazar. Betiği indirip sqlcmd ile çalıştırın.

CSV dosyam noktalı virgül veya sekme kullanıyorsa?

Ayırıcı algılanır: virgül, noktalı virgül, sekme veya dikey çizgi. Daha fazla seçenek altından da ayarlayabilirsiniz. Noktalı virgülle, 1.234,50 gibi ondalık virgüller sayı olarak okunur.

Hangi SQL Server türlerini kullanır?

Evet/hayır değerleri bit, tam sayılar int, ondalıklar decimal(p,s), tarihler date, saatli tarihler datetime2 ve metin nvarchar(n) olur. Boyutlar her sütundaki en uzun değere göre belirlenir.

SQL Server için baştaki sıfırları korur mu?

Evet. 00412 gibi bir kod metin olarak kalır; SQL Server onu nvarchar(8) olarak saklar ve betik onu N'00412' olarak yazar.

Verileri betik olmadan SQL Server veritabanına yükleyebilir mi?

Hayır. Betiği indirip sqlcmd ile çalıştırın. Betiksiz yükleme masaüstü uygulamasından veya komut satırından PostgreSQL, MySQL, MariaDB ve SQLite için çalışır.

CSV dosyası ne kadar büyük olabilir?

Tarayıcı CSV dosyasını akış halinde okur, bu yüzden birkaç gigabaytlık dosyalar çalışır. Apple M4'lü bir dizüstü bilgisayarda komut satırı bir milyon satırlık 174 MB'lık bir CSV dosyasını bir saniyeden kısa sürede dönüştürür.