【问题标题】:trying to import csv file to table in sql试图将csv文件导入到sql表中
【发布时间】:2022-11-30 01:49:30
【问题描述】:

我有 4 个 csv 文件,每个文件有 500,000 行。

例子:

未命名:0,时间,纬度,经度,nobs_cloud_day
0, 2006-03-30, 24.125, -119.375, 22.0
1, 2006-03-30, 24.125, -119.125, 25.0

. .

ETC ...

csv example image

我创建的用于导入 csv 的表是


CREATE TABLE cloud_coverage_CONUS (
index_cloud DECIMAL(10,0)
,"time" DATE -- PRIMARY KEY 
,lat DECIMAL(10,6)
,lon DECIMAL(10,6)
,nobs_cloud_day DECIMAL (3,1)
)

导入命令是

IMPORT INTO cloud_coverage_CONUS FROM LOCAL CSV FILE 'D:\uni\BI\project 1\AOL_DB_ANALYSIS_TASK1\datasets\cloud\cfc_us_part0.csv';

错误:

SQL 错误 [42636]: java.sql.SQLException: ETL-3050: [Column=0 Row=0] [Transformation of value='Unnamed: 0' failed - invalid character value for cast;值:'未命名:0'](会话:1750854753345597339)同时执行'/*将路径添加到云数据库文件夹中的 4 个 csv 文件*/从 CSV 导入 cloud_coverage_CONUS AT'https://27.1.0.10: 59205'文件'e12a96a6-a98f-4c0a-963a-e5dad7319fd5';'; 04509 java.sql.SQLException: java.net.SocketException: Connection reset by peer: 套接字写入错误

或者

CREATE TABLE cloud_coverage_CONUS (
"time" DATE -- PRIMARY KEY 
,lat DECIMAL(10,6)
,lon DECIMAL(10,6)
,nobs_cloud_day DECIMAL (3,1)
)
IMPORT INTO cloud_coverage_CONUS FROM LOCAL CSV FILE 'D:\uni\BI\project 1\AOL_DB_ANALYSIS_TASK1\datasets\cloud\cfc_us_part0.csv'(2 FORMAT='YYYY-MM-DD', 3 .. 5);

错误:

SQL 错误 [42636]: java.sql.SQLException: ETL-3052: [Column=0 Row=0] [Transformation of value='time' failed - YYYY 格式标记的无效值;值:'time' 格式:'YYYY-MM-DD'](会话:1750854753345597339)同时执行'/* 添加云数据库文件夹中的 4 个 csv 文件的路径*/ IMPORT INTO cloud_coverage_CONUS FROM CSV AT 'https ://27.1.0.10:60350' FILE '22c64219-cd10-4c35-9e81-018d20146222' (2 FORMAT='YYYY-MM-DD', 3 .. 5);'; 04509 java.sql.SQLException: java.net.SocketException: Connection reset by peer: 套接字写入错误

实际上我想忽略第一列。

如何解决这个问题

我想导入 csv,但日期列有错误,csv 文件中第一个不需要的列有问题

【问题讨论】:

    标签: mysql sql csv import-csv


    【解决方案1】:

    查看第一条错误消息,有几件事很突出。首先我们看到这个:

    [列=0 行=0]

    这告诉我们问题出在文件中的第一个值。它甚至告诉我们读取了哪些值:

    value='Unnamed: 0' 的转换失败

    所以它无法转换Unnamed: 0。您还提供了表定义,其中我们看到值的第一列是 decimal 类型。

    这是有道理的。Unnamed: 0 不是小数.

    为此,CSV 数据必须与表中列的数据类型对齐。

    【讨论】:

      【解决方案2】:

      尝试这个

      IGNORE N LINES
      LOAD DATA INFILE "/path/to/file.csv"
      INTO TABLE MYTABLE 
      COLUMNS TERMINATED BY ','
      OPTIONALLY ENCLOSED BY '"'
      LINES TERMINATED BY '
      '
      IGNORE 1 LINES;
      

      【讨论】:

      • 感谢您的回复 :) SQL 错误 [42000]:语法错误,意外的 DATA_,期待赋值运算符或':'[第 2 行,第 6 列](会话:1750854753345597339)加载数据 INFILE“D:uniBIproject 1AOL_DB_ANALYSIS_TASK1datasetscloudcfc_us_part0.csv”进入表cloud_coverage_CONUS 列由 ',' 终止,可选地由 '"' 括起来,由 ' 终止的行 ' 忽略 1 行;
      猜你喜欢
      • 2013-02-20
      • 2015-02-06
      • 2012-12-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-27
      • 1970-01-01
      相关资源
      最近更新 更多