Mysql 如何在将csv文件加载到表中时忽略comman内部字段

Mysql 如何在将csv文件加载到表中时忽略comman内部字段,mysql,Mysql,我有一个csv文件。我需要将内容加载到表中。有些字段中包含逗号,但我在这些字段中遇到错误。命令将截断此逗号中的字段。如何改进我的命令以忽略字段值中的逗号。下面是我的SQL命令: LOAD DATA INFILE 'C:/myfile.csv' IGNORE INTO TABLE db.table COLUMNS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' ESCAPED BY '\\' LINES TERMINATED BY '\n' (col1,c

我有一个
csv
文件。我需要将内容加载到表中。有些字段中包含逗号,但我在这些字段中遇到错误。命令将截断此逗号中的字段。如何改进我的命令以忽略字段值中的逗号。下面是我的SQL命令:

LOAD DATA INFILE 'C:/myfile.csv'
IGNORE
INTO TABLE db.table
COLUMNS TERMINATED BY ','
OPTIONALLY ENCLOSED BY '"'
ESCAPED BY '\\'
LINES TERMINATED BY '\n'
(col1,col2,col3,col4,col5,col6);
编辑:我的csv文件字段不包含在

编辑:csv中的数据示例:

col1  |  col2  |  col3  |  col4  |  col5  |  col6
------------------------------------------------------------
1111  |  2222  |  3333  |  4444  |  5555  |  firstname, lastname
存储在MySQL中的
col6
格式为:

"firstname, lastname" .. followed by all the next fields until the column is filled and truncated.
你有两个选择

选择1 要求一个有效的CSV文件,而不是一个好的文本文件

选择2 后面是语法,您可以这样做

LOAD DATA INFILE 'C:/myfile.csv'
IGNORE
INTO TABLE db.table
COLUMNS TERMINATED BY ','
OPTIONALLY ENCLOSED BY '"'
ESCAPED BY '\\'
LINES TERMINATED BY '\n'
( col1, col2, col3, col4, col5, @firstname, @lastname )
SET col6 = CONCAT_WS( ' ', @firstname, @lastname );
你有两个选择

选择1 要求一个有效的CSV文件,而不是一个好的文本文件

选择2 后面是语法,您可以这样做

LOAD DATA INFILE 'C:/myfile.csv'
IGNORE
INTO TABLE db.table
COLUMNS TERMINATED BY ','
OPTIONALLY ENCLOSED BY '"'
ESCAPED BY '\\'
LINES TERMINATED BY '\n'
( col1, col2, col3, col4, col5, @firstname, @lastname )
SET col6 = CONCAT_WS( ' ', @firstname, @lastname );

这可以通过使用Excel宏实现。请使用以下步骤:

  • 打开Visual Basic编辑器(Alt+F11)
  • 从编辑器中,转到:
    Insert>Module
  • 粘贴如下所示的宏
  • 关闭脚本编辑器
  • 转到Excel并从以下位置运行宏:
    Tools>macro>Macros
    应看到选择了名为
    CSVFile
    的宏。单击“运行”
  • 您将看到一个
    另存为
    窗口。输入工作表名称并保存 新工作表将在每个字段中添加“”
  • 宏代码为:

    Sub CSVFile()
    Dim SrcRg As Range
    Dim CurrRow As Range
    Dim CurrCell As Range
    Dim CurrTextStr As String
    Dim ListSep As String
    Dim FName As Variant
    FName = Application.GetSaveAsFilename("", "CSV File (*.csv), *.csv")
    ListSep = Application.International(xlListSeparator)
      If Selection.Cells.Count > 1 Then
        Set SrcRg = Selection
      Else
        Set SrcRg = ActiveSheet.UsedRange
      End If
    Open FName For Output As #1
    For Each CurrRow In SrcRg.Rows
      CurrTextStr = ìî
    For Each CurrCell In CurrRow.Cells
      CurrTextStr = CurrTextStr & """" & CurrCell.Value & """" & ListSep
    Next
    While Right(CurrTextStr, 1) = ListSep
      CurrTextStr = Left(CurrTextStr, Len(CurrTextStr) - 1)
    Wend
    Print #1, CurrTextStr
    Next
    Close #1
    End Sub
    

    参考:

    这可以通过使用Excel宏来实现。请使用以下步骤:

  • 打开Visual Basic编辑器(Alt+F11)
  • 从编辑器中,转到:
    Insert>Module
  • 粘贴如下所示的宏
  • 关闭脚本编辑器
  • 转到Excel并从以下位置运行宏:
    Tools>macro>Macros
    应看到选择了名为
    CSVFile
    的宏。单击“运行”
  • 您将看到一个
    另存为
    窗口。输入工作表名称并保存 新工作表将在每个字段中添加“”
  • 宏代码为:

    Sub CSVFile()
    Dim SrcRg As Range
    Dim CurrRow As Range
    Dim CurrCell As Range
    Dim CurrTextStr As String
    Dim ListSep As String
    Dim FName As Variant
    FName = Application.GetSaveAsFilename("", "CSV File (*.csv), *.csv")
    ListSep = Application.International(xlListSeparator)
      If Selection.Cells.Count > 1 Then
        Set SrcRg = Selection
      Else
        Set SrcRg = ActiveSheet.UsedRange
      End If
    Open FName For Output As #1
    For Each CurrRow In SrcRg.Rows
      CurrTextStr = ìî
    For Each CurrCell In CurrRow.Cells
      CurrTextStr = CurrTextStr & """" & CurrCell.Value & """" & ListSep
    Next
    While Right(CurrTextStr, 1) = ListSep
      CurrTextStr = Left(CurrTextStr, Len(CurrTextStr) - 1)
    Wend
    Print #1, CurrTextStr
    Next
    Close #1
    End Sub
    

    参考:

    您的命令已经指定了
    可以选择用“”
    括起来。如果您在未引用的字段中有逗号,则除非您首先编辑文件以更正数据,否则无法加载它们。请发布一个数据示例,说明错误记录。如果您未正确转义或引用字段,则CSV文件不是CSV文件。(修复您的输入文件)@Michael Berkowski:My csv不包含双变量。我怎样才能添加它们?@user1810868如果不查看数据,很难说。在某些情况下,可以使用流编辑器或正则表达式进行修复,或者您可能正在进行手动编辑。您的命令已经指定了
    (可选)由“”
    。如果您在未引用的字段中有逗号,则除非您首先编辑文件以更正数据,否则无法加载它们。请发布一个数据示例,说明错误记录。如果您未正确转义或引用字段,则CSV文件不是CSV文件。(修复您的输入文件)@Michael Berkowski:My csv不包含双变量。我怎样才能添加它们?@user1810868如果不查看数据,很难说。在某些情况下,可以使用流编辑器或正则表达式进行修复,也可以进行手动编辑。