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宏实现。请使用以下步骤:
Insert>Module
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宏来实现。请使用以下步骤:
Insert>Module
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如果不查看数据,很难说。在某些情况下,可以使用流编辑器或正则表达式进行修复,也可以进行手动编辑。