1

ファイルがあり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.
4

2 に答える 2

1

2 つのオプションがあります

オプション1

適切なテキスト ファイルではなく、有効なRFC 4180 CSV ファイルを要求する

オプション 2

これを行うことができるLOAD DATA INFILE構文が続きます

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 );
于 2012-12-20T01:24:23.610 に答える
0

これは、Excel マクロを使用することで可能になります。次の手順を使用します。

  1. Visual Basic Editor (Alt+F11) を開きます。
  2. エディターから、次の場所に移動しますInsert > Module
  3. 以下に示すマクロを貼り付けます
  4. スクリプト エディタを閉じる
  5. Excel に移動し、次の場所からマクロを実行しますTools > Macro > Macros。という名前のマクロがCSVFile選択されているはずです。[実行] をクリックします。
  6. ウィンドウが表示されSave Asます。シートの名前を入力して保存します。新しいシートでは、すべてのフィールドに「」が追加されます。

マクロ コードは次のとおりです。

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

参照: http://www.markinns.com/articles/full/export_excel_csvs_with_double_quotes

于 2012-12-27T18:54:48.557 に答える