gpt4 book ai didi

mysql - 将数据从平面文件加载到 MySQL 表中

转载 作者:行者123 更新时间:2023-11-29 23:12:37 24 4
gpt4 key购买 nike

我正在学习 SQL,并尝试使用一些示例数据来理解各种概念。

以下是 Yahoo! Search Marketing Advertiser Bid-Impression-Click data on competing Keywords data 的前几行内容看起来像:

1   08bade48-1081-488f-b459-6c75d75312ae    2   2affa525151b6c51 79021a2e2c836c1a 327e089362aac70c fca90e7f73f3c8ef af26d27737af376a    100.0   2.0 0.0
29 08bade48-1081-488f-b459-6c75d75312ae 3 769ed4a87b5010f4 3d4b990abb0867c8 cd74a8342d25d090 ab9f74ae002e80ff af26d27737af376a 100.0 1.0 0.0
29 08bade48-1081-488f-b459-6c75d75312ae 2 769ed4a87b5010f4 3d4b990abb0867c8 cd74a8342d25d090 ab9f74ae002e80ff af26d27737af376a 100.0 1.0 0.0
11 08bade48-1081-488f-b459-6c75d75312ae 1 769ed4a87b5010f4 3d4b990abb0867c8 cd74a8342d25d090 ab9f74ae002e80ff af26d27737af376a 100.0 2.0 0.0
76 08bade48-1081-488f-b459-6c75d75312ae 2 769ed4a87b5010f4 3d4b990abb0867c8 cd74a8342d25d090 ab9f74ae002e80ff af26d27737af376a 100.0 1.0 0.0
48 08bade48-1081-488f-b459-6c75d75312ae 3 2affa525151b6c51 79021a2e2c836c1a 327e089362aac70c fca90e7f73f3c8ef af26d27737af376a 100.0 2.0 0.0
97 08bade48-1081-488f-b459-6c75d75312ae 2 2affa525151b6c51 79021a2e2c836c1a 327e089362aac70c fca90e7f73f3c8ef af26d27737af376a 100.0 1.0 0.0
123 08bade48-1081-488f-b459-6c75d75312ae 5 769ed4a87b5010f4 3d4b990abb0867c8 cd74a8342d25d090 ab9f74ae002e80ff af26d27737af376a 100.0 1.0 0.0
119 08bade48-1081-488f-b459-6c75d75312ae 3 2affa525151b6c51 79021a2e2c836c1a 327e089362aac70c fca90e7f73f3c8ef af26d27737af376a 100.0 1.0 0.0
73 08bade48-1081-488f-b459-6c75d75312ae 1 2affa525151b6c51 79021a2e2c836c1a 327e089362aac70c fca90e7f73f3c8ef af26d27737af376a 100.0 1.0 0.0

请注意,此数据只能从 Yahoo! 获得。根据要求。

以下是数据的描述:

(1) "ydata-ysm-keyphrase-bid-imp-click-v1_0.gz" contains the following fields:

0 day
1 anonymized account_id
2 rank
3 anonymized keyphrase (expressed as list of anonymized keywords)
4 avg bid
5 impressions
6 clicks

Primary key of the data is a combination of fields date, account_id, rank and keyphrase. Average bid, impressions and
clicks information is aggregated over the primary key.

我正在尝试使用 load data infile 语句将此数据从平面文件加载到 MySQL 表中。

总的来说,我认为我了解如何指定列的数据类型,但不确定 3 个匿名关键字短语(表示为匿名关键字列表):
问题 1:我应该将它们指定为单独的 varchar 列,还是有一种数据类型允许它们作为“列表”类型存储在一起?

<小时/>

这是我当前必须创建表来保存此数据的查询。

# create a new database
create database webscopedata;
show databases;
use webscopedata;

# create the table
drop table bidders;
create table bidders (
daynum int,
account_id varchar(40),
rank int,
keyphrase1 varchar(100),
keyphrase2 varchar(100),
keyphrase3 varchar(100),
keyphrase4 varchar(100),
keyphrase5 varchar(100),
avg_bid double,
impressions double,
clicks double);

现在当我尝试运行查询时

load data infile "ydata-ysm-keyphrase-bid-imp-click-v1_0" into table bidders fields terminated by "\t";

也就是说,当我指定制表符分隔符时,出现错误:

Error Code: 1261. Row 1 doesn't contain data for all columns

这让我相信在指定制表符分隔符时字段没有正确分隔。所以我尝试使用查询指定多个分隔符:

load data infile "ydata-ysm-keyphrase-bid-imp-click-v1_0" into table bidders fields terminated by "' '\t";

这里我尝试使用多个字段终止符,但这似乎不起作用,并且出现错误:
错误代码:1265。第 1 行“daynum”列的数据被截断

问题 2:如何指定使用多个分隔符解析此数据?

最佳答案

您可以使用perl正则表达式重新格式化数据文件,然后尝试使用mysql加载数据功能导入它。

使用以下 perl 脚本重新格式化数据文件

#!/usr/bin/perl -w
use strict;
open(FH, "<", "ydata-ysm-keyphrase-bid-imp-click-v1_0");
my ($line, $data) = ();
while(<FH>){
$line = $_;
$line = qq($line);
$line=~s/(\s+)/"/g;
$line=~s/(\s*)"$//;
$data .= $line."\n";
}
close FH;

open(FH, ">", "DataFile");
print FH $data;
close FH;

然后在mysql中执行以下语句

将文件“pathToYourDataFile/DataFile”中的数据加载到以“””结尾的表格出价者字段中;

希望,这可以解决您将数据导入mysql的问题。

关于mysql - 将数据从平面文件加载到 MySQL 表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27998971/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com