で 2 つの方法で実行できますLOAD DATA INFILE
。
最初に最初のフィールド値をそのまま読み取り、それから等号=
と二重引用符を inSET
句から取り除きます。また、次のようなデータをロードしているときに、他の変換を実行する可能性が最も高くなります。
NULL
フィールドが空のときに実際の s を設定します
- 金額からドル記号を取り除く
- おそらく日付値を変換する必要があります(ただし、サンプルデータにはそれらがないため、推測する情報はありません)
LOAD DATA LOCAL INFILE '/path/to/your/file.csv'
IGNORE INTO TABLE table_name
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'
LINES TERMINATED BY '\r\n'
IGNORE 1 LINES
(@MID, DBAName, PartnerID, PartnerName, SubPartnerID, SubPartnerName, ActiveMonths,
@BonusAmount, @BonusAppliedDate, @PartnerPercentage, @PartnerShare, @TotalPayment)
SET MID = TRIM(BOTH '"' FROM SUBSTR(@MID, 2)), -- here we get rid of equal sign and double quotes
BonusAmount = TRIM(LEADING '$' FROM NULLIF(@BonusAmount, '')),
BonusAppliedDate = NULLIF(@BonusAppliedDate, ''),
PartnerPercentage = NULLIF(@PartnerPercentage, ''),
PartnerShare = TRIM(LEADING '$' FROM NULLIF(@PartnerShare, '')),
TotalPayment = TRIM(LEADING '$' FROM NULLIF(@TotalPayment, ''))
2番目のアプローチはLINES STARTING BY
条項を活用することです
LOAD DATA LOCAL INFILE '/path/to/your/file.csv'
IGNORE INTO TABLE table_name
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'
LINES TERMINATED BY '\r\n' STARTING BY '='
IGNORE 1 LINES
(MID, DBAName, PartnerID, PartnerName, SubPartnerID, SubPartnerName, ActiveMonths, @BonusAmount, BonusAppliedDate, PartnerPercentage, PartnerShare, @TotalPayment)
SET BonusAmount = TRIM(LEADING '$' FROM NULLIF(@BonusAmount, '')),
BonusAppliedDate = NULLIF(@BonusAppliedDate, ''),
PartnerPercentage = NULLIF(@PartnerPercentage, ''),
PartnerShare = TRIM(LEADING '$' FROM NULLIF(@PartnerShare, '')),
TotalPayment = TRIM(LEADING '$' FROM NULLIF(@TotalPayment, ''))
ターゲットテーブルスキーマが次のようになっている場合
CREATE TABLE table_name
(
MID BIGINT,
DBAName VARCHAR(100),
PartnerID INT,
PartnerName VARCHAR(100),
SubPartnerID INT,
SubPartnerName VARCHAR(100),
ActiveMonths INT,
BonusAmount DECIMAL(19, 2),
BonusAppliedDate DATE,
PartnerPercentage DECIMAL(3, 2),
PartnerShare DECIMAL(19, 2),
TotalPayment DECIMAL(19, 2)
);
次に、いずれかの方法でロードした後、表に表示されるのは次のとおりです
mysql> select * from table_name;
+------+----------+-----------+---------- ---+--------------+----------------+-------------- +-------------+------------------+---------------- ---+--------------+--------------+
| | ミッド | DBA名 | パートナー ID | パートナー名 | サブパートナー ID | サブパートナー名 | アクティブな月 | ボーナス額 | ボーナス適用日 | パートナーの割合 | パートナーシェア | 支払い総額 |
+------+----------+-----------+---------- ---+--------------+----------------+-------------- +-------------+------------------+---------------- ---+--------------+--------------+
| | 8788014065741 | 会社2 | 7968 | 私 | 私 | 11839 | ジョーブロー | 0 | 50.00 | ヌル | ヌル | ヌル | 350.64 |
| | 8788014065756 | 会社2 | 7968 | あなた | 11839 | ジョーブロー | 0 | 50.00 | ヌル | ヌル | ヌル | 294.60 |
+------+----------+-----------+---------- ---+--------------+----------------+-------------- +-------------+------------------+---------------- ---+--------------+--------------+
2 行セット (0.00 秒)