问题描述
我正在尝试从数据集生成随机样本,并使用 Mac 计算机上的 MysqL 工作台将文件存储在 csv 中。我的代码如下:
<Slider {...settings}>
{sliderData.map((slide,index) => {
return (
<div
className='TeamSlider'
key={index}
style={{ height: '185px !important' }}
>
<img src={slide.image} alt='slider' key={index} />
</div>
)
})}
</Slider>
未使用此脚本创建 csv 文件。
我错过了什么?
解决方法
你有一个不属于那里的 UNION
SELECT 'col1','col2','col3','col4','col5'
INTO OUTFILE '/Users/Jim/Notebook/artest.csv'
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"',ESCAPED BY '\' LINES TERMINATED BY '\n'
FROM information_schema.columns
WHERE table_schema = 'ar_state_nurses_salaries'
AND table_name = 'ar_state_nurses_salaries.ar_state_nurses_salaries'
ORDER BY RAND(5)
LIMIT 1;
,
你问题的代码有点奇怪。 information_schema.COLUMNS
表包含其他表中列的描述。我不认为这是你想要的。
我相信你想要的结果集,没有标题,可以这样检索。
SELECT *
FROM ar_state_nurses_salaries
ORDER BY RAND()
LIMIT 50
然后,您可以像这样导出。
SELECT *
INTO OUTFILE '/Users/Jim/Notebook/artest.csv'
FIELDS TERMINATED BY ','
OPTIONALLY ENCLOSED BY '"'
ESCAPED BY '\'
LINES TERMINATED BY '\n'
FROM (
SELECT *
FROM ar_state_nurses_salaries
ORDER BY RAND()
LIMIT 50
) results
请注意我如何将您的数据选择放入子查询中。那是因为您想将标题放在导出的文件中。这样做。
SELECT *
INTO OUTFILE '/Users/Jim/Notebook/artest.csv'
FIELDS TERMINATED BY ','
OPTIONALLY ENCLOSED BY '"'
ESCAPED BY '\'
LINES TERMINATED BY '\n'
FROM (
SELECT 'col1','col5'
UNION ALL
SELECT *
FROM ar_state_nurses_salaries
ORDER BY RAND()
LIMIT 50
) results
(不要在这里使用 UNION,因为 UNION 做了很多工作来去重行。UNION ALL 跳过了这项工作。)
但这可能不起作用:当您使用任何类型的 UNION 时,联合的每一列在整个结果中都必须具有相同的数据类型。因此,如果您的表格的第一列是人名,那就行了。您将获得一堆名称,第一个名称,即您的 CSV 列标题,将是 col1
。它们都是文本字符串。但是,如果第二个数字是工资数字就行不通了,因为 'col2' 是一个字符串,而该列的其余部分是数字。
(这是一个臭名昭著的将 MySQL 数据导出到文件时的 xxx 脖子痛。)