Mysql 使用“选择查询”加载数据填充以进行数据查找
我能够使用以下创建和加载数据填充命令成功加载文件:Mysql 使用“选择查询”加载数据填充以进行数据查找,mysql,Mysql,我能够使用以下创建和加载数据填充命令成功加载文件: --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(1
--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);
现在,我想使用加载到addresses中的地址id将数据从另一个文件(receipt.dat)加载到receipts表中。目前,地址名存储在receive.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…
行格式的正确方法是什么(如果有方法的话)?您可以设置addresId:
--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, amount, notes)
SET addressId = select max(addressId) from mbc.addresses where name = @addressId;
我希望能帮助你。这就是我的工作成果……希望这能帮助其他人
--Create and load receipts (uses data from the table create/load scripts above)
CREATE TABLE `receipts` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`receiptDate` date NOT NULL,
`addressId` bigint(20) NOT NULL,
`designationId` bigint(20) NOT NULL,
`amount` decimal(10,0) NOT NULL,
`notes` varchar(1000) DEFAULT NULL,
PRIMARY KEY (`id`)
) 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'
(@var1,@var2,@var3,amount,notes)
SET receiptDate = STR_TO_DATE(@var1,'%m/%d/%Y'),
addressId = (select max(id) from addresses where name = @var2),
designationId = (select max(id) from designations where name = @var3);