次の create および load data infile コマンドを使用して、ファイルを正常に読み込むことができました。
--Create and load addresses
CREATE TABLE `addresses` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`name` varchar(100) NOT NULL,
`address1` varchar(100) NOT NULL,
`address2` varchar(100) DEFAULT NULL,
`city` varchar(100) NOT NULL,
`stateCode` varchar(2) NOT NULL,
`zipCode` varchar(10) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=64 DEFAULT CHARSET=utf8;
LOAD DATA INFILE 'C:/temp/address.dat'
INTO TABLE mbc.addresses
FIELDS
TERMINATED BY X'1F'
LINES
TERMINATED BY X'1E'
(name,address1,address2,city,stateCode,zipCode);
ここで、アドレスに読み込まれたアドレス ID を使用して、別のファイル (receipt.dat) から領収書テーブルにデータを読み込みたいと思います。現在、住所名は、recipe.dat の「addressId」フィールドに格納されています。私はこのようなことをしようとしていますが、正しい構文が何であるかわかりません:
--Create and load receipts
CREATE TABLE `receipts` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`receiptDate` date NOT NULL,
`addressId` bigint(20) NOT NULL,
`amount` decimal(10,0) NOT NULL,
`notes` varchar(200) DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `addressFK_idx` (`addressId`),
CONSTRAINT `addressFK` FOREIGN KEY (`addressId`) REFERENCES `addresses` (`id`) ON DELETE NO ACTION ON UPDATE NO ACTION,
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
LOAD DATA INFILE 'C:/temp/receipt.dat'
INTO TABLE mbc.receipts
FIELDS
TERMINATED BY X'1F'
LINES
TERMINATED BY X'1E'
(receiptDate,
select max(addressId) from mbc.addresses where name = @addressId,
amount,
notes);
上記の行をフォーマットする適切な方法は何ですかselect max(addressId...
(方法がある場合)?